首页 > 代码库 > [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调度