![为什么在内核模式下运行的进程不能被抢占](https://linux22.com/image/84022/%E4%B8%BA%E4%BB%80%E4%B9%88%E5%9C%A8%E5%86%85%E6%A0%B8%E6%A8%A1%E5%BC%8F%E4%B8%8B%E8%BF%90%E8%A1%8C%E7%9A%84%E8%BF%9B%E7%A8%8B%E4%B8%8D%E8%83%BD%E8%A2%AB%E6%8A%A2%E5%8D%A0.png)
我读到用户模式进程是抢占式的,但为什么内核模式进程不是?
答案1
“内核抢占是一种主要用于单片和混合内核的方法,其中所有或大多数设备驱动程序都在内核空间中运行,从而允许调度程序强制执行上下文切换(即抢占式调度;代表可运行且优先级较高的进程)在驱动程序或内核的其他部分执行期间,而不是协作等待驱动程序或内核函数(例如系统调用)完成其执行并将处理器的控制权返回给调度程序。
这种方法在整体内核和混合内核中有两个主要好处,并回答了微内核倡导者对整体内核的主要批评之一:设备驱动程序可能会进入无限循环或其他不可恢复的状态,从而使整个系统崩溃。单片内核上的某些驱动程序和系统调用执行速度很慢,并且在完成执行之前无法将处理器的控制权返回给调度程序或其他程序。 ”