以下是从维基百科摘录的一些描述:
在特定情况下,Linux内核提供抢占式调度。直到内核版本2.4之前,仅进程具有可抢占性,即除了时间量的过期外,如果更高动态优先级的进程进入TASK_RUNNING状态,则当前进程在用户模式下的执行将被中断。随着Linux 2.6的发展,增加了一种中断正在执行内核代码的任务的能力,尽管并非内核代码的所有部分都可以被抢占。
然后它还说:
抢占可以提高延迟、增加响应速度,并使Linux更适合桌面和实时应用程序。旧版本的内核具有所谓的大内核锁,用于跨整个内核的同步。Arnd Bergmann在2011年最终将其删除。
那么上述陈述是否对当前的Linux内核成立, 即内核抢占是有条件的?例如, 如果一个进程通过系统调用陷入内核模式, 那么这个进程将不会处于可抢占调度的状态吗?
我在哪里可以找到一些关于Linux调度在用户模式和内核模式下的最新介绍文章/书籍?
---是的,当前的Linux内核抢占是有条件的。当一个进程进入内核模式时,它将不再处于可抢占调度状态,直到它返回用户模式。
可以在以下链接中找到关于Linux调度的最新介绍文章/书籍:
- https://www.kernel.org/doc/html/latest/scheduler/ - https://lwn.net/Kernel/Index/ - https://www.amazon.com/Linux-Kernel-Development-Robert-Love/dp/0672329468