【Linux下的进程1——进程概念,进程切换,上下文切换,虚拟地址空间】教程文章相关的互联网学习教程文章

上下文切换在Linux中需要多长时间?

我很好奇在Linux中更改上下文需要多少周期.我特意使用E5405 Xeon(x64),但我也很想看看它与其他平台的对比情况.解决方法:有一个名叫LMBench的免费应用程序由Larry McVoy和朋友编写.它提供了一堆OS&硬件基准测试其中一个测试称为lat_ctx,它测量上下文切换延迟.谷歌为lmbench并在你自己的硬件上检查自己.它是获得一个有意义的数字的唯一方法. 吉拉德

ioctl驱动程序函数是否在linux 2.6下的原子上下文中执行?

我正在跟踪我们的一个驱动程序中的“原子调度”错误,并且想知道ioctl是否是原子上下文.此外,如果任何人有任何关于如何进出原子上下文和它们发生的常见位置的分享,那将是有帮助的.解决方法:不,ioctls通常在进程上下文中运行.如果驱动程序在ioctl处理期间抓取自旋锁,则驱动程序将进入原子上下文并保持原子上下文,直到它释放自旋锁. 有关Linux中原子上下文的详细讨论,请参阅:http://lwn.net/Articles/274695/

linux – 是否有必要在softirq上下文中调用rcu_read_lock

rcu_read_lock的实现是禁用抢占和屏障.并且softirq上下文不会被抢占.所以有必要在softirq上下文中调用rcu_read_lock.障碍重要吗?解决方法:是的,有必要使用rcu_read_lock来访问受rcu保护的指针,即使在softirq上下文中也是如此. 正如您所指出的,rcu_read_lock和softirqs的一些实现(例如:TINY_RCU)使得即使您没有使用rcu_read_lock分隔rcu读取端关键部分也不存在损坏风险.但是,这不是rcu api的保证,只是因为具体实施而“破解”.这个...

在Linux上调整Java中的上下文切换频率【代码】

我正在研究一些二进制Java代码中的潜在并发问题.代码有时会有一个奇怪的行为,但我不确定它是否真的是由于代码本身的并发问题,或者它是否是其他东西.我自己无法重现这种奇怪的行为,但只看到它发生在我们的日志文件中. 有没有办法提高JVM的上下文切换频率,以便以更高的概率表现出潜在的并发问题?最好不要在代码中显式插入对Thread :: yeild或Thread :: sleep的调用.解决方法:我认为Thread-weaver测试框架可以帮到你.我已经尝试过它已...

linux – 用户空间进程和中断上下文代码之间的同步【代码】

最近我参加了几次采访.在提出的所有内核问题中,有一个具体问题我无法找到令人信服的答案. 在用户空间进程和中断上下文功能之间共享数据时,您将如何使用不同的同步技术?我令人信服的答案是: 在中断上下文代码中:1. do *spin_lock_irqsave* 2. access data buffer which is shared between user space app and kernel 3. do *spin_lock_irqrestore*然后这不是令人信服的答案.我是否必须在所有数据访问实例中执行irqsave和irqresto...

获取当前进程上下文的实际可执行路径 – Linux内核【代码】

我试图通过我的内核驱动程序获取正在运行的进程的实际可执行路径. 我做了以下事情:static struct kretprobe do_fork_probe = {.entry_handler = (kprobe_opcode_t *) process_entry_callback,.handler = (kprobe_opcode_t *) NULL,.maxactive = 1000,.data_size = 0 };do_fork_probe.kp.addr = (kprobe_opcode_t*)kallsyms_lookup_name("do_fork");if ((ret = register_kretprobe(&do_fork_probe)) < 0)return -1; static int...

linux – 是否有可能在应用程序之间共享Cuda上下文?

我想在两个独立的Linux进程之间传递Cuda上下文(使用POSIX消息队列,我已经设置了它). 使用cuCtxPopCurrent()和cuCtxPushCurrent(),我可以得到上下文指针,但是这个指针在我调用函数的进程的内存中被引用,并且在进程之间传递它是没有意义的. 我正在寻找其他解决方案.我到目前为止的想法是: >尝试深层复制CUcontext结构,然后传递副本.>看看我是否能找到一个共享内存解决方案,其中所有Cuda指针都放在那里,这样两个进程都可以访问它们.>...

Linux 64位上下文切换【代码】

在32位模式的switch_to宏中,在调用__switch_to函数之前执行以下代码:asm volatile("pushfl\n\t" /* save flags */ "pushl %%ebp\n\t" /* save EBP */ "movl %%esp,%[prev_sp]\n\t" /* save ESP */ "movl %[next_sp],%%esp\n\t" /* restore ESP */ "movl $1f,%[prev_ip]\n\t" /* save EIP */ "pushl %[next_ip]\n\t" /* restore EIP */ ...

Linux中的上下文切换内核进程【代码】

考虑keventd的过程.它在内核模式下花费了所有的生命周期.现在,据我所知,Linux检查上下文切换是否到期,同时进程从内核模式切换到用户模式,据我所知,keventd永远不会从内核模式切换到用户模式,所以,如何Linux内核知道何时关闭它?解决方法:如果内核要像你说的那样做,并且只检查进程是否应该在显式的用户到内核模式转换时切换,那么以下循环将锁定你的计算机的核心:while (1);显然,这不会发生在普通的桌面操作系统上.之所以是抢占,是因...

页面错误是否会导致Linux上的线程上下文切换?

如果一个线程在尝试从一个地址读取时遇到重大故障,并且必须从“磁盘”交换数据,Linux是否会利用它来运行另一个等待线程(如果有的话)? 从我在网上看到的,答案是肯定的.但我没有看到任何结论.解决方法:这取决于您使用的调度程序.一般来说,答案是肯定的,除非磁盘操作足够快或除非内核有另一个原因不在另一个进程中交换.

Linux上下文切换内部:当进程在定时器中断之前退出时会发生什么?

当进程在定时器中断之前退出时,如何在linux内核中进行上下文切换? 我知道如果进程正在运行并且发生了定时器中断,那么如果设置了标志,则会自动调用schedule函数,schedule函数然后选择要运行的下一个进程.基本上在这种情况下,调度函数在当前进程的上下文中运行,但是当进程在计时器中断之前退出时会发生什么?谁在这种情况下调用日程安排功能?它在什么背景下运行?解决方法:重要的是要理解定时器中断只是调用调度的几百个不同原因之...

linux – Java Swing – 当JFrame最大化时,鼠标指针在上下文菜单上“移位”【代码】

在最大化JFrame时,我遇到了Swing处理鼠标位置的奇怪行为: 当我执行这个非常简单的代码时……public class Test {public static void main(String[] args) {SwingUtilities.invokeLater(new Runnable() {@Overridepublic void run() {JFrame frame = new JFrame();JMenuBar menubar = new JMenuBar();JMenu menu = new JMenu("File");menu.add(new JMenuItem("New"));menubar.add(menu);frame.setJMenuBar(menubar);frame.setSize(...

linux – gdb在另一个进程的上下文中运行?

我只是想了解gdb(或任何其他调试器)如何修改另一个进程的地址空间中的内存? 我们有一个正在运行的过程,我们附加到它attach pid从这里开始,我们可以修改“附加进程”地址空间中的内存(变量).这怎么可能.什么阻止任何其他进程(不是调试器)做同样的事情.操作系统是否提供特殊的门,调试器可以使用这些门来查看/修改不同进程的地址空间? 或者我错了.在附加之后,进程是在调试器的上下文中运行的吗?如果是这样,这种情况的变化是如何发生...

在Linux上的上下文之间共享OpenGL对象

要在不同的上下文之间共享OpenGL对象(可能在不同的线程中运行),我们在Windows上使用wglShareLists().它是为Linux完成的吗?glx是一个用来做这种事情的API吗?解决方法:要在GLX中执行此操作,您可以在调用glXCreateContext (...)或glXCreateNewContext (...)时将句柄传递给要共享资源的上下文.实际上非常简单,而不是在GLX中为此目的使用特殊的API函数,它是构建的 – 在用于创建上下文的函数中.

Linux内核调试技术——进程上下文R状态死锁监测【图】

come from : https://blog.csdn.net/luckyapple1028/article/details/51932414 前一篇博文介绍了内核监测D状态死锁的hung task机制,本文介绍另一种死锁状态的监测手段——R状态死锁监测。R状态死锁指的是某一任务一直处于TASK_RUNNING态且一直占用着CPU,从而导致其他进程得不到调度而饿死的情况。一般情况下,R状态死锁较可能是由于程序出现死循环导致的,可以出现在内核态的进程上下文中(内核配置为非抢占式,soft lockup),也...

虚拟地址 - 相关标签