Linux中的内核线程在什么上下文中运行?
我是Linux内核的新手。Linux中的内核线程在什么上下文中运行?,linux,linux-kernel,kernel,Linux,Linux Kernel,Kernel,我是Linux内核的新手。 我知道有两种情况 1.进程上下文,在用户空间或内核空间中运行(例如:作为系统调用的一部分) 2.中断上下文 内核线程(与任何用户线程无关,例如:flush任务)在什么上下文中运行 Linux内核中除了进程和中断上下文之外还有其他上下文吗?有些任务既不是通过系统调用调用也不是在处理中断时调用的。这些被当作纯粹的内核上下文处理,例如swapper、INIT_任务等,它们没有相应的代码在用户空间中运行 内核线程在内核空间的进程上下文中运行。虽然也有一些内核线程处理中断。他们
我知道有两种情况
1.进程上下文,在用户空间或内核空间中运行(例如:作为系统调用的一部分)
2.中断上下文 内核线程(与任何用户线程无关,例如:flush任务)在什么上下文中运行
Linux内核中除了进程和中断上下文之外还有其他上下文吗?有些任务既不是通过系统调用调用也不是在处理中断时调用的。这些被当作纯粹的内核上下文处理,例如swapper、INIT_任务等,它们没有相应的代码在用户空间中运行 内核线程在内核空间的进程上下文中运行。虽然也有一些内核线程处理中断。他们被称为。但它们仍然在流程上下文中运行 这篇文章很好地解释了这两种语境之间的重要区别 这里有一个可以帮助你获得更多的理解
据我所知,进程和中断是仅有的两种上下文。有一些状态,有些可能是其他状态的特化。另见
- NMI上下文(\u NMI()中的
) - 硬中断上下文(\u irq()中的
) - 软中断上下文(\u softirq()中的
) - (tasklet、计时器和工作队列上下文)
- 原子上下文(\u atomic()中的
)。除其他外,入口可能是旋转锁
- 例如,在RCU上下文中输入
RCU\u read\u lock
- 用户上下文
访问这样的GPIO需要一个可以休眠的上下文,例如线程化IRQ处理程序,那么这意味着线程化中断处理程序可以正常休眠?你说得对。但它们不是唯一的线程中断处理程序,对吗?或者,当他们说线程中断处理程序时,它真的指的是软中断吗?软中断与线程中断是正交的。线程中断处理程序来自-rt(realtime)树,在该树中,您希望不惜一切代价避免不可预测的延迟,因此可以在可以(取消)优先级的单独线程中运行一些中断处理程序。