加载中...
抢占式调度允许操作系统在进程运行过程中强制收回CPU分配给更需要的进程,非抢占式调度则要等待进程主动让出。二者是进程调度的两大基本策略,决定了系统的响应性与公平性。

| 类型 | 进程调度策略 |
| 两大类别 | 抢占式、非抢占式 |
| 抢占触发 | 定时器中断、优先级 |
| 典型抢占系统 | Linux、Windows |
| 别称 | 协作式调度 |
抢占式调度与非抢占式调度是操作系统进程调度的两种基本方式。抢占式(preemptive)指内核可以在进程运行时强制中断它并将CPU分配给其他进程;非抢占式(non-preemptive,又称协作式)则要求正在运行的进程主动放弃CPU后,调度器才会切换。
CPU是稀缺资源,调度器负责决定何时把它交给哪个进程。区别的关键在于:一个进程一旦获得CPU,是否可能在它未主动让出时被夺走。抢占式调度通常借助定时器中断,在时间片耗尽或有更高优先级任务就绪时触发切换;非抢占式则依赖进程执行到阻塞、结束或显式让出等点位才切换。
现代通用操作系统如Linux、Windows、macOS均采用抢占式调度,以保证多任务下的良好交互体验和公平性。早期的Windows 3.x、经典Mac OS以及部分协程/事件循环框架采用协作式调度。实时操作系统更强调抢占,以确保高优先级任务在确定时间内被响应。Linux内核本身也经历了从不可抢占到内核抢占的演进。
问:抢占式一定比非抢占式好吗?答:不一定。抢占式响应性好但实现复杂、切换开销高;在任务简单、切换点明确的嵌入式或协程场景,非抢占式反而更高效可控。
问:时间片和抢占是什么关系?答:时间片是抢占式调度的一种常见触发条件,进程用完分配的时间片后被抢占,让其他就绪进程获得运行机会,实现分时共享。

| 类型 | 进程调度策略 |
| 两大类别 | 抢占式、非抢占式 |
| 抢占触发 | 定时器中断、优先级 |
| 典型抢占系统 | Linux、Windows |
| 别称 | 协作式调度 |
登录 后参与讨论
暂无讨论,来发表第一条评论吧