我正在网上寻找彼得森的算法,我似乎无法区分它是否是抢先式的。
抢先-非自愿调度,操作系统决定何时停止该进程
非抢先-进程完成后自动放弃CPU
我觉得peterson的算法似乎不是抢先的,因为没有提到进程的优先级。
那是对的吗?有人可以对此有所启发吗?
最佳答案
彼得森的算法不是抢占式的,也不是非抢占式的。
Preemption是基础操作系统(更确切地说是调度程序)的概念。调度程序的任务是及时(按双关语)将时隙分配给进程。
调度程序可以中断有关等待状态的过程。
但是,向调度程序发送信号是“谨慎”的选择,现在正是利用等待状态让另一个进程运行的好时机。
对于彼得森算法,该信号应位于while
循环内。一个简单的sleep
就足够了。
Wikipedia还提到:
while条件即使具有抢占也有效
因此,在开始时总结一下:
彼得森的算法不是抢占式的,也不是非抢占式的。