4

考虑过程 keventd。它在内核模式下度过了所有生命周期。现在,据我所知,Linux 在进程从内核模式切换到用户模式时检查上下文切换是否到期,据我所知,keventd 永远不会从内核模式切换到用户模式,那么,如何Linux内核会知道何时关闭它吗?

4

1 回答 1

4

如果内核按照你说的做,并且只检查一个进程是否应该在显式的用户到内核模式转换时被关闭,那么下面的循环将锁定你计算机的一个核心:

while (1);

显然,这不会发生在普通的桌面操作系统上。原因是抢占,在进程运行了它的时间片后,内核会收到警报,介入并根据需要强制切换上下文。

抢占原则上也适用于内核进程。但是,我不确定那是什么keventd- 它更有可能定期自愿放弃其时间片(请参阅sched_yield用于相同效果的用户空间调用),特别是因为内核可以配置为不可抢占。这是内核进程的特权。

于 2012-01-28T16:55:11.340 回答