这是本人在操作系统期中考试前复习是碰到的问题,花了一些时间解决,现在记录下来。
1. 先到先服务调度
先到先服务(first-come, first-served, FCFS)。
这可以利用 FIFO 队列轻松实现。
采用 FCFS 的缺点是平均等待时间通常较长。
另外考虑在动态情况下,CPU 会出现所谓 护航效果 导致 CPU和设备的使用率更低。
2. 最短作业优先调度
shortest-job first。当CPI空闲时,这种算法会将CPU赋给具有最短CPU区间的进程,如果两个进程有相同的CPU长度,那么就可以用FCFS来处理。
称为 SJF 策略。
SJF策略可以被证明为是最佳的。不过实际的困难是,如何知道某个进程的CPU时间。一种方式是预测,
根据上次上下文切换时保存的信息等,可以推出这个进程的上一个CPU时段的耗时,可以作为下一次CPU区间时长的估计。
SJF 有时也被称为最短剩余时间优先调度。
3. 优先级调度
SJF 是通用优先级算法的一个特例。每个进程都有一个优先级与之关联,具有最高优先级的进程会被先分配到 CPU 中。具有相同优先级的进程采用FCFS顺序调度。SJF 属于简单优先级的算法,其优先级(pp<