Linux内核中的延迟工作与中断处理机制
1. Linux内核操作上下文
Linux内核在两种上下文中执行操作:
- 进程上下文 :内核代表用户进程执行操作时所处的模式,例如执行系统调用内核服务例程。工作队列和线程化中断调度的延迟工作也在进程上下文中执行。这些内核线程在内核空间进程上下文中运行,但不代表任何用户进程。在进程上下文中执行的代码可以阻塞。
- 中断上下文 :由硬件中断控制器异步请求触发。此特殊上下文也称为“原子上下文”,因为在此上下文中执行的代码无法阻塞。中断不可调度,它们发生并执行中断处理程序,创建自己的上下文。软中断、小任务和定时器在中断上下文中运行,这意味着它们不能调用阻塞函数。
下面是一个简单的mermaid流程图,展示这两种上下文的关系:
graph LR
A[Linux内核操作] --> B[进程上下文]
A --> C[中断上下文]
B --> D[可阻塞代码]
C --> E[不可阻塞代码]
2. 延迟工作
延迟工作允许将代码调度到稍后执行。调度的代码可以使用工作队列或线程化中断在进程上下文中运行(这两种方法都使用内核线程),也可以使用软中断、小任务和定时器在中断上下文中运行。工作队列和线程化中断的底半部基于能够阻塞的内核线程实现,而小任务和定时器基于不能调用阻塞函数的软中断实现。
延迟工作用于补充中断处理程序的功能,因为中断有重要的要求和限制:
-
Linux内核延迟工作与中断处理机制解析
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



