操作系统复习(五)

发布时间:2026/7/3 16:55:01
操作系统复习(五) 操作系统复习五平均调度算法和调度方式的准则CPU利用率吞吐量响应时间就绪等待时间周转时间真实系统的调度算法UNIX多级反馈队列LinuxCFS完全公平调度作业调度和进程调度作业调度和进程调度是操作系统调度体系中的两个不同层次它们最本质的区别在于一个管“准入”一个管“分配”。作业调度高级调度决定哪些程序可以从磁盘进入内存。进程调度低级调度决定哪个进程可以立刻占用CPU运行。对比维度作业调度高级调度 / 长程调度进程调度低级调度 / 短程调度调度对象作业JCB即磁盘上的程序及数据集。进程PCB即内存中的运行实体。操作位置外存磁盘→内存。将作业从输入井调入内存并建立进程内存就绪队列→CPU。将进程从就绪态变为运行态执行频率极低。通常在作业提交或系统吞吐量下降时触发间隔可达数秒甚至数分钟。极高。通常每毫秒或几十毫秒就要发生一次受时间片和中断控制。抢占性非抢占式。一旦选入内存该作业会一直驻留直到运行结束或异常终止不会被中途换出内存由中级调度负责换出。可抢占/非抢占式。在分时系统中多为抢占式如时间片到强制切换在批处理中也可为非抢占式如FCFS。控制的并发度控制系统中进程的数量多道程序度。选入太多则内存紧张选入太少则CPU空闲。控制CPU的分配轮转。决定了哪个进程先运行、运行多久。适用系统主要存在于批处理系统。分时系统和实时系统为了快速响应通常不设作业调度或者将其功能简化合并。所有操作系统必备。只要有程序在运行就一定有进程调度。调度依据依据作业的固有属性到达时间、预估运行时间、资源申请量、用户优先级。依据进程的动态属性状态、时间片、动态优先级、等待时长。多级反馈队列多级反馈队列的核心机制多级队列设置多个优先级从高到低的就绪队列。高优先级队列分配极短的时间片如 2ms低优先级队列分配较长的时间片如 200ms。新作业空降新到达的作业总是首先进入最高优先级队列。降级反馈如果进程在给定时间片内未完成则将其降级到下一个低优先级队列的末尾这就是“反馈”。关键补充老化提升为了防止低优先级作业永远饿死系统会定期将所有进程提升回高优先级队列或称“优先级老化”。针对“各方面用户”的满足分析1. 交互式用户分时/前台任务—— 满足“响应时间快”用户需求敲击键盘、鼠标点击必须立刻有反应分时系统的核心。算法应对交互式任务通常耗时极短如输入一个字符。它们进入最高优先级队列获得很小的时间片如2ms。由于高优先级队列优先被调度它们能瞬间抢占后台长作业并在2ms内完成运行释放CPU。结果用户感觉不到卡顿响应时间极短。2. 短作业用户批处理短任务—— 满足“平均周转时间短”用户需求计算任务本身很短希望尽快算完拿到结果。算法应对即使短任务在2ms内没跑完它也只是降到次高优先级队列依然远高于后台长作业。它通常能在前几个高优先级队列中快速完成。结果短作业的平均周转时间接近“短作业优先SJF”的理论最优值且不需要系统事先知道哪个作业是“短作业”SJF的致命弱点被克服了。3. 长作业用户CPU密集型/后台任务—— 满足“不会饿死”用户需求大型科学计算或视频渲染不着急要结果但必须确保最终能跑完。算法应对长作业会一直消耗时间片被多次降级最终掉入时间片最长如200ms的最低优先级队列。防止饿死如果只有降级长作业会在最低队列永远排不到。此时**“老化机制”** 发挥作用——每隔一段时间系统强制把所有进程提到最高队列。长作业因此能重新回到前排获得调度机会。结果长作业虽然偶尔被交互任务打断但它能用较长的时间片持续计算最终完成绝不会出现“饥饿”现象。4. I/O密集型用户数据库/文件读写—— 满足“优先响应”用户需求频繁读写磁盘CPU使用率低但要求I/O请求被快速处理。算法应对I/O型进程在时间片内由于等待I/O主动放弃CPU未用完时间片。在许多实现中系统会保留或提升它的优先级因为它没占满时间片被视为“友好交互”。结果I/O进程能保持高优先级快速响应外设提高系统整体吞吐量。优势无需预知“作业长度”相比短作业优先SJF——它虽然理论周转时间短但需要提前预知作业运行时长现实中无法做到。而多级反馈队列通过“先给短时间片跑不完就降级”的试探机制动态地识别并优待了短作业这是它能成为现代操作系统如经典UNIX调度基础的根本原因。总结**多级反馈队列通过“高优先级伺候短交互任务降级惩罚长CPU任务老化机制防止饿死”的组合拳**让每种类型的作业无论长短、前后台都能在非极端条件下获得相对满意的服务而不需要提前知道任何作业的属性。