首页 > 代码库 > [OS] CPU调度
[OS] CPU调度
调度准则
为了比较CPU调度算法,分析员提供了许多准则,用于比较的特征对确定最佳算法有很大影响。这些准则包括:
·CPU使用率:需要使CPU尽可能忙。
·吞吐量:一个时间单元内完成进程的数量。
·周转时间:从进程提交到进程完成的时间。
·等待时间:进程在就绪队列中等待所花时间之和。
·响应时间:对于分时系统,从提交请求到第一次响应的时间。
调度算法
·先来先服务调度(FCFS)
采用这种方案,先请求CPU的进程先分配到CPU。FCFS策略可以用FIFO队列来容易的实现。
缺点:
1.周转时间与响应时间无法保证
2.对短作业不利
对于那些执行时间较短的作业或进程来说,如果它们在某些执行时间很长的作业或进程之后到达,则它们将等待很长时间。
·最短作业优先调度(SJF)
当CPU空闲时,它会赋给具有最短CPU区间的进程。如果两个进程具有相同长度,那么可以使用FCFS调度来处理。
虽然SJF算法最佳,但它不能在短期CPU调度层次上加以实现。因为没办法知道下一个CPU区间的长度。一种方法是近似SJF调度。虽然不知道下一个CPU区间的长度,但是可以预测它。认为下一个CPU区间的长度与以前的相似。因此,通过计算下一个CPU区间的长度的近似值,能选择具有最短预测CPU区间的进程来运行。下一个CPU区间通常可预测为以前CPU区间的测量长度的指数平均。
SJF算法可能是抢占的或非抢占的。
抢占:可抢占当前运行的进程。----也叫最短剩余时间优先调度(SRT)。
非抢占:允许当前运行的进程先完成其CPU区间。
·优先级调度
每一个进程都有一个优先级与之关联,具有最高优先级的进程会分配到CPU。具有相同优先级的进程按照FCFS顺序调度。
优先级调度可以是抢占的或非抢占的。
优先级调度算法的一个主要问题是无穷阻塞或饥饿。可以运行但缺乏CPU的进程可认为是阻塞的,它在等待CPU。
低优先级进程无穷等待问题的解决办法之一是老化。老化是一种技术,以逐渐增加在系统中等待很长时间的进程的优先级。
[OS] CPU调度