Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 中断上下文和进程上下文之间的区别?_Linux_Linux Kernel_Operating System - Fatal编程技术网

Linux 中断上下文和进程上下文之间的区别?

Linux 中断上下文和进程上下文之间的区别?,linux,linux-kernel,operating-system,Linux,Linux Kernel,Operating System,什么是中断上下文?什么是过程上下文? 中断上下文的优点是什么 为什么需要下半部分?为什么不是上半部分的所有处理?进程上下文是进程的当前状态,进程上下文可以进入睡眠状态,可抢占,它执行消耗时间的任务,获取和释放互斥 中断上下文是当中断发生时,状态/优先级转到中断处理程序,当前进程停止/保存,直到我们完成中断,中断上下文不是时间消耗的,不可抢占的,它不能进入睡眠状态 下半部分机制SoftIRQ、Tasklet在中断上下文中工作,工作队列可以进入睡眠状态,因此它不会在中断上下文中运行 过程上下文 进程

什么是中断上下文?什么是过程上下文? 中断上下文的优点是什么


为什么需要下半部分?为什么不是上半部分的所有处理?

进程上下文是进程的当前状态,进程上下文可以进入睡眠状态,可抢占,它执行消耗时间的任务,获取和释放互斥

中断上下文是当中断发生时,状态/优先级转到中断处理程序,当前进程停止/保存,直到我们完成中断,中断上下文不是时间消耗的,不可抢占的,它不能进入睡眠状态

下半部分机制SoftIRQ、Tasklet在中断上下文中工作,工作队列可以进入睡眠状态,因此它不会在中断上下文中运行

过程上下文 进程中最重要的部分之一是执行程序代码。该代码从可执行文件中读取,并在程序的地址空间中执行。正常的程序执行发生在用户空间中。当程序执行系统调用或触发异常时,它将进入内核空间。此时,内核被称为代表进程执行,并且处于进程上下文中。在进程上下文中,当前宏有效。退出内核后,进程将在用户空间中恢复执行,除非在过渡期间更高优先级的进程变得可运行,在这种情况下,将调用调度程序来选择更高优先级的进程

中断上下文 当执行中断处理程序或下半部分时,内核处于中断上下文中。回想一下,进程上下文是内核在代表进程执行时所处的操作模式,例如,执行系统调用或运行内核线程。在流程上下文中,当前宏指向关联的任务。此外,由于进程在进程上下文中耦合到内核,因为进程以与上述进程相同的方式连接到内核,因此进程上下文可以休眠或以其他方式调用调度器

另一方面,中断上下文与进程无关。尽管当前宏指向中断的进程,但它并不相关。由于没有进程背景,没有支持进程,中断上下文无法睡眠,它将如何重新调度?或者如何重新安排?因此,无法从中断上下文调用某些函数。如果函数处于休眠状态,则不能从中断处理程序使用它。这会限制函数,以便可以从中断处理程序调用。这是对中断处理程序中可以使用哪些函数的限制


更多详细信息。

可能重复@Tsyvarev no的不同问题,这是下半部分中断上下文进入图片的答案,我的问题是中断上下文和进程上下文之间的差异。您最初的问题是上半部分和下半部分。在哪种类型中,中断上下文出现在图片中?@Tsyvarev是的,我修改了这个问题。