考虑keventd的过程。它在内核模式下花费了所有的生命周期。 现在,据我所知,Linux检查上下文切换是否到期,同时进程从内核模式切换到用户模式,据我所知,keventd永远不会从内核模式切换到用户模式,所以,如何Linux内核知道何时关闭它?
答案 0 :(得分:4)
如果内核要像你说的那样做,并且只检查进程是否应该在显式的用户到内核模式转换时关闭,那么以下循环将锁定你的计算机的核心:
while (1);
显然,这在普通桌面操作系统上不会发生。之所以是 preemption ,其中在进程运行其时间片之后内核会发出警报,介入并强制切换上下文。
Preemption原则上也适用于内核进程。但是,我不确定这是keventd
的作用 - 它更可能是它定期自愿放弃它的时间片(参见sched_yield
,用户空间调用同样的效果),特别是因为内核可以配置为不可抢占。这是一个内核进程'特权。