【问题标题】:Difference between interrupt context and process context?中断上下文和进程上下文的区别?
【发布时间】:2020-01-19 01:53:42
【问题描述】:

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

为什么需要下半部分?为什么不把所有的处理都放在上半部分?

【问题讨论】:

  • @Tsyvarev 没有不同的问题,它是下半部分的答案,中断上下文进入图片,我的问题是中断上下文和进程上下文之间的区别。
  • 您最初的问题是“上半部分和下半部分。图片中的中断上下文是哪种类型?”。
  • @Tsyvarev 是的,我修改了问题。

标签: linux linux-kernel operating-system


【解决方案1】:

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

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

Bottom Half 机制,SoftIRQ,Tasklet 工作在中断上下文中,workqueue 可以进入睡眠状态,所以它不在中断上下文中运行。

进程上下文

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

中断上下文

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

另一方面,中断上下文与进程无关。当前宏不相关(尽管它指向中断的进程)。如果没有后备进程(因为没有进程背景),中断上下文无法休眠——它会如何重新调度? (或者如何重新安排它?)因此,不能从中断上下文中调用某些函数。如果一个函数休眠了,你就不能从你的中断处理程序中使用它——这限制了函数,所以人们可以从中断处理程序中调用它。 (这是中断处理程序中可以使用哪些函数的限制)

Link了解更多详情。

【讨论】:

    猜你喜欢
    • 2018-04-14
    • 2017-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-07
    • 1970-01-01
    • 1970-01-01
    • 2020-10-29
    相关资源
    最近更新 更多