我是Linux Kernel的新手
我知道有两种情况
1.进程上下文,在用户空间或内核空间中运行(例如:作为系统调用的一部分)
2.中断上下文
在什么情况下,内核线程(与任何用户线程无关,例如:flush任务)运行?
除了Linux内核中的进程和中断上下文之外还有其他任何上下文吗?
答案 0 :(得分:17)
内核线程在内核空间的进程上下文中运行。虽然有一些内核线程也可以处理中断。它们被称为threaded interrupt handlers。但它们仍然在流程环境中运行!
Here是对两种情境之间重要区别的极好解释!
这是一个可以帮助你获得更多理解的东西!
What context does the scheduler code run in?
据我所知,进程和中断是唯一的2个上下文。
答案 1 :(得分:3)
有少数几个州 - 有些可能是其他国家的专业。另请参阅http://www.kernel.org/doc/htmldocs/kernel-hacking.html。
in_nmi()
)in_irq()
)in_softirq()
)in_atomic()
)。可能的入口通道是spin_lock
。rcu_read_lock
例如答案 2 :(得分:0)
有些任务既不是通过系统调用调用,也不是在处理中断时调用。这些被处理为纯内核上下文,例如交换器,INIT_TASk等,它们没有在用户空间中运行的相应代码。