不必等待任务自愿退出
协作式执行依赖任务通过系统调用、等待或主动让出等方式交回控制。若一个程序一直循环又不请求系统服务,仅有这种安排可能无法及时调度其他工作。
硬件定时器能够触发中断,使内核重新运行;系统由此有机会暂停当前任务,改让其他就绪任务执行。抢占提供的是重新分配处理器的能力,何时以及按何规则使用仍由调度策略决定。
参考:[1]
时间片服务不同目标
轮转调度让就绪任务各执行一段时间再轮到下一项。较短时间片通常减少其他任务等到首次运行的间隔,但也会增加状态切换频率;较长时间片则把切换成本摊到更多工作上。
首次响应、全部完成时间和公平性并不总能同时最优。实际系统还需考虑任务是否等待输入输出等状态,所以“可以抢占”并不等于所有任务始终机械地分得完全相同的份额。
参考:[2]
并发机会不等于同步保证
单个处理器上快速交替运行,可以支持多个活动的并发进展,却不表示同一时刻执行了多个任务的普通指令。多核环境才可能让这些任务实际同时运行,调度仍需安排可用核心。
任务可能在共享状态更新途中被暂停,因此程序必须使用合适的同步规则保护跨步骤约定。抢占不保证数据结构自动一致,也不保证某项工作有确定的最坏响应时间;这些需要额外的程序与调度约束。