三种抢占模型概述
在linux内核选项中存在存在三种抢占模型:
│ │ ( ) No Forced Preemption (Server) │ │
│ │ (X) Voluntary Kernel Preemption (Desktop) │ │
│ │ ( ) Preemptible Kernel (Low-Latency Desktop)
- No Forced Preemption (Server)
非抢占式,适合server系统,这是因为非抢占式内核会减少进程上下文切换的次数,从而能将节省下来的这部分开销用在其他有用的任务上。另外这里要注意的是非抢占是指内核态任务非抢占,用户态任务是可以抢占的,试想如果用户态的任务都无法抢占,linux怎么还能称之为多任务操作系统。 - Preemptible Kernel (Low-Latency Desktop)
抢占式,是指内核态任务是可以抢占的,适合桌面系统,这是因为桌面系统比较注重响应速度,所以该抢占时就要抢占。 - Voluntary Kernel Preemption (Desktop)
自愿内核抢占,也就是说内核可以自愿被抢占,也可用于桌面系统,介于可抢占和不可抢占之间。
亲身感受抢占与非抢占内核
通过如下三个实验先来感受一下这三种抢占模型的效果:
- 实验代码代码内核部分
#include <linux/kernel.h>
#include <linux/module.h>