- 用户态下的抢占和内核态下的抢占的对象是内核态还是用户态的任务?
抢占式内核
保证最高优先级任务的率先执行。当一个比当前运行着的任务优先级更高的任务进入了就绪态,那么当前任务的 CPU 使用权就会被剥夺,即当前任务会被挂起,优先级更高的任务立刻获得 CPU 的使用权。
缺点是:对于不可重入任务,需要借助互斥型信号量来实现,不可重入型任务中的数据可能被破坏。
用户态抢占
内核在即将返回用户空间时,发生在用户空间,检查进程是否需要被重新调度。
- 从系统调用返回用户空间;
- 从中断处理程序返回用户空间;
内核抢占
在内核空间,一个运行在内核态的进程,被另一个进程所取代。
- 没持有锁。锁是用于保护临界区的,不能被抢占。