操作系统-CPU调度

最近期末复习操作系统,老师讲的不太清楚,自己私底下好好的琢磨了一下,花了不少时间,就把几种调度算法弄得清清楚楚的。接下来就讲讲FCFS、SJF、SRJF、RR这几种调度算法。
首先理解一下CPU的基本概念,CPU调度就是每次当CPU空闲时,操作系统按照一定的策略从就绪队列中选择一个进程来执行。这种策略,就是cpu调度的算法的选择。
总体来说,CPU调度遵循以下原则:
总原则:资源高效、公平合理
具体一般包括:
提高CPU利用率
提高系统运算的吞吐量
缩短进程的周转时间
缩短进程的等待时间
提高用户的响应满意度
###FCFS:先到先服务(first come first serve)
调度的顺序就是任务到达就绪队列的顺序。
简而言之,就是按到达的时间依次执行。
看下面例子:
操作系统-CPU调度_第1张图片
按照FCFS的执行顺序就是:A、B、C、D、E
调度结果:
操作系统-CPU调度_第2张图片

平均等待时间:(0+2+5+4+7)/ 5 = 3.6

###SJF:最短作业优先(Shortest Job First)
调度的顺序是从当前就绪队列中选择运行时间最短的运行
还是上面的例子,按照SJF的调度顺序结果应该是:
操作系统-CPU调度_第3张图片
平均等待时间:(0+0+5+4+7) / 5 =3.2

###SRJF:可抢占的最短作业优先(Shortest Remaining Job First )
可抢占的最短作业优先,如果有运行时间更短的任务到达就绪队列,[到达的人物比当前正在运行的任务用时更短],那么到达的这个任务可以去抢占CPU。
换个例子:
操作系统-CPU调度_第4张图片
采用SRJF的调度顺序运行结果如下:
这里写图片描述
平均等待时间:(3+32+0+8+0)/5 = 8.6
简要说明一下SRJF的调度算法:p1,p2都是0时刻到达,系统选择运行时间最短的p1先运行,在第5ms的时候,p3,p4到达,第5ms的p1还剩5ms,而p3的长度只有3ms,比p1短,那么p3就要去抢占cpu的执行权,所以第5ms的时候p1就要退出,运行p3.后面的执行顺序也是如此。

###RR:轮叫(Round-Robin)
按时间片来轮转调度,以上的算法中,可能有些任务一直无法得到CPU的运行权,不适合交互式的任务。那么RR就是为了好的交互式而产生的。
RR是设置一个时间片,每个任务的运行时间都是这个时间片,没有执行完就排队继续等待。
看下面例子:
操作系统-CPU调度_第5张图片

按照RR的调度顺序运行的结果如下:
这里写图片描述
平均等待时间:平均等待时间: (0+32+20+23+40)/5 = 23

你可能感兴趣的:(其他)