基本概念
CPU调度:从就绪队列中选择进程并为之分配CPU
抢占式:进程从运行状态切换到就绪状态、等待->就绪(优先级高则抢占)
非抢占式:运行->等待,终止

比较调度算法的准则
- CPU利用率
- CPU 处于忙状态的 时间百分比
- 吞吐量
- 单位时间内完成的 进程数量
- 周转时间
- 进程从 初始化 到 结束(包括等待)的总时间
- 等待时间
- 进程在 就绪队列中 的总时间
- 响应时间
- 从提交请求到产生响应所花费的总时间
调度算法
先到先服务算法(FCFS)
非抢占的,简单,平均等待时间长
短进程优先算法
SPN: Shortest Process Next
SJF: Shortest Job First(最短作业优先调度算法)
真正困难时如何知道下一个CPU区间的长度
- SRT: Shortest Remaining Time(短剩余时间优先算法)
优先级调度:可以实抢占式和非抢占的
可能会导致无穷阻塞或者饥饿,解决方法是老化
时间片轮转算法 (各个进程轮流占用一个相等的时间片)
进程可能只需要小于时间片的CPU 区间。对于这种情况, 进程本身会自动释放CPU 调度程序接着处理就绪队列的下一个进程。否则,如果当前运 行进程的 CPU 区间比时间片要长,定时器会中断并产生操作系统中断,然后进行上下文切
换,将进程加入到就绪队列的尾部,接着CPU 调度程序会选择就绪队列中的下一个进程。多级队列调度:每个队列有自己的调度算法
多级反馈队列算法 (将就绪队列分成不同子序列 使用不同的算法)
多级反馈队列调度算法 (multilevel feedback queue scheduling algorithm) 允 许进程在队列之间移动。主要思想是根据不同CPU 区间的特点以区分进程。如果进程使用 过多 CPU 时间,那么它会被转移到更低优先级队列。这种方案将νo 约束和交互进程留在 更高优先级队列。此外,在较低优先级队列中等待时间过长的进程会被转移到更高优先级
队列。这种形式的老化阻止饥饿的发生。
