wag*_*wag 16
在抢占式内核上,在内核模式下运行的进程可以在内核函数中间被另一个进程替换。
这仅适用于在内核模式下运行的进程,在用户模式下执行进程的 CPU 被认为是“空闲”的。如果用户态进程想要从内核请求服务,他必须发出内核可以处理的异常。
举个例子:
进程A
执行异常处理程序,进程B
被 IRQ 请求唤醒,内核A
用B
(强制进程切换)替换进程。过程A
未完成。调度程序随后决定进程是否A
获得 CPU 时间。
在非抢占式内核上,进程A
将使用所有处理器时间,直到他完成或自愿决定允许其他进程中断他(计划的进程切换)。
今天的基于 Linux 的操作系统通常不包含完全抢占式内核,仍有一些关键功能必须不间断地运行。所以我认为你可以称之为“选择性抢占内核”。
除此之外,还有一些方法可以使 Linux 内核(几乎)完全抢占。