# 3.4 优先级调度 ## 一、优先级调度的基本概念 ### 1.1 什么是优先级调度 优先级调度是一种根据进程优先级来分配CPU的调度算法。优先级高的进程优先获得CPU。 ### 1.2 优先级的确定 **静态优先级**: - 进程创建时确定 - 运行期间保持不变 - 确定因素: - 进程类型(系统进程 > 用户进程) - 资源需求(资源需求少 > 资源需求多) - 用户要求(用户指定优先级) - 作业类型(I/O繁忙型 > CPU繁忙型) **动态优先级**: - 进程运行期间可以改变 - 调整因素: - 等待时间(等待时间越长,优先级越高) - 运行时间(运行时间越长,优先级越低) - I/O操作(I/O操作后提高优先级) --- ## 二、优先级调度算法 ### 2.1 非抢占式优先级调度 **特点**: - 一旦进程获得CPU,直到完成或阻塞才释放 - 实现简单 **调度过程**: 1. 从就绪队列选择优先级最高的进程 2. 分配CPU给该进程 3. 进程运行直到完成或阻塞 4. 重新调度 ### 2.2 抢占式优先级调度 **特点**: - 高优先级进程到达时,可以抢占低优先级进程的CPU - 响应时间快 **调度过程**: 1. 从就绪队列选择优先级最高的进程 2. 如果新到达进程优先级高于当前进程,抢占CPU 3. 被抢占进程进入就绪队列 4. 高优先级进程运行 --- ## 三、优先级反转问题 ### 3.1 什么是优先级反转 **定义**:高优先级进程被低优先级进程阻塞的现象。 **例子**: - 低优先级进程L持有资源R - 中优先级进程M运行,抢占L - 高优先级进程H需要资源R,被阻塞 - 结果:M运行,H等待(优先级反转) ### 3.2 解决方法 **优先级继承**: - 低优先级进程L临时继承高优先级进程H的优先级 - L以H的优先级运行,直到释放资源 - 防止中优先级进程M抢占L **优先级天花板**: - 资源有优先级上限 - 进程获得资源时,优先级提升到资源的优先级上限 - 防止优先级反转 --- ## 四、多级优先级队列 ### 4.1 基本概念 将就绪队列分成多个优先级队列,每个队列有不同的优先级。 ### 4.2 调度方式 **固定优先级**: - 先调度高优先级队列 - 只有高优先级队列为空,才调度低优先级队列 **时间片分配**: - 每个队列分配不同的时间片比例 - 高优先级队列获得更多CPU时间 --- ## 五、考研重点 1. **优先级类型**:静态优先级和动态优先级 2. **抢占式和非抢占式**:区别和应用场景 3. **优先级反转**:产生原因和解决方法 4. **多级优先级队列**:调度方式 --- *下一节:3.5 多级反馈队列调度*