操作系统中的调度算法

目录

1.先来先服务算法(FCFS)

2.短作业优先调度算法(SJF)

3.优先级调度算法

4.高响应比优先调度算法

5.轮转调度算法(RR)

6.多级反馈轮转调度算法

7.实时系统的调度算法


1.先来先服务算法(FCFS)

原理:

  • 先来先服务(FCFS)调度算法是最简单的调度算法。
  • 它通过管理一个就绪队列来实现,从前到后按顺序将CPU分配给进程。

示例:

现在有如下一组进程:

进程执行时间
P130
P25
P32

所以执行顺序为 < P 1 、 P 2 、 P 3 > ,我们画出它的甘特图来形象的理解:

下面的时刻表示该进程占用CPU的执行时间。(后面的几种调度方法也使用甘特图来帮助理解。)

所以可以计算求得三个进程的平均等待时间为:
(0+30+35)/3≈21.7

特点:

FCFS调度算法对短进程不利,尤其当一个短进程跟在长进程后面时,它需要等待很长的时间。有时候会导致CPU和设备的利用率很低,在实际情况中,FCFS算法在单处理机系统中已很少作为主调度算法通常与其他算法结合使用,进而形成一种更为有效的调度算法。

2.短作业优先调度算法(SJF)

原理:

  • 最短作业优先(Shortest-Job First)调度算法克服了FCFS的对短进程不利的缺点,它在就绪队列中选择处理时间最短的进程,如果时间相同则可以按照FCFS准则来处理。
  • 它提高了系统的吞吐量,但是反过来又对长进程不利。
  • 它分为抢占式和非抢占式两种情况

示例:

现在有如下一组进程,假设它们同时到达(非抢占式):

进程执行时间
P15
P24
P39
P43

所以执行顺序为 < P 4 、 P 2 、 P 1 、 P 3 >,我们画出它的甘特图如下:

在这里插入图片描述

 所以可以计算求得三个进程的平均等待时间为:
(0+3+7+12)/4=5.5

3.优先级调度算法

原理:

  • 由用户或者系统按照某种原则给进程一个优先级,系统总是调度优先级最高的那个进程运行。
  • 优先级可以分为静态优先级和动态优先级。静态优先级就是指优先级确定以后就不再改变,比如说按照它们的执行时间长短来确定等等;动态优先级会随着进程的不断执行而发生改变,比如说可以按照等待时间的长短划分优先级等等。
  • 对优先级动态调整可以改善系统性能,但是动态优先级调度算法会增加系统开销。

示例:

现在有如下一组进程(采用静态优先级调度算法):

进程执行时间优先级
P195
P241
P323
P414

所以执行顺序为 < P 2 、 P 3 、 P 4 、 P 1 > ,我们画出它的甘特图如下:

 所以可以计算求得四个进程的平均等待时间为:
(0+4+6+7)/4 =4.25

4.高响应比优先调度算法

原理:

  • 最高响应比(Highest Response Ratio Next)调度算法集合了FCFS算法和非抢占SJF算法的优点,使用响应比R来表征,即:R=SW+S​ (W为等待时间、S为预计执行时间)
  • R=(S+W)/S​ (W为等待时间、S为预计执行时间)
  • 在该算法下,等待时间相同的时候短进程响应比高于长进程,短进程优先被调度;而随着等待时间增长,进程的响应比增加,长进程被调度的可能性也会增加。

5.轮转调度算法(RR)

原理:

  • 轮转(Round Robin)调度算法是一种基于抢占的调度策略,在分时系统中,每个进程会被分配一个固定的时间片,就绪队列中的进程按顺序依此调度运行。
  • 时间片过短会使进程切换过于频繁,增加系统开销;时间片过长会使进程响应时间增加。

示例:

现在有如下一组进程如下:

进程执行时间
P124
P23
P33

这里时间片我们选择为4,按照原理可得甘特图如下:

 6.多级反馈轮转调度算法

原理:

  • 是对简单轮转调度算法的改进,它把新就绪的进程和被抢占后回到就绪队列的进程加以区分,将它们放入不同优先级的就绪队列中;
  • 被抢占后放回就绪队列的进程优先级会降低,但是运行的时间片长度会增加。

7.实时系统的调度算法

原理:

  • 在实时系统中会给出一个最后期限,最后期限指定任务开始或结束的时间,任务必须严格按照最后期限执行。
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
(1)、假定系统有五个进程,每一个进程用一个进程控制块PCB来代表。进程控制块的格式 (2)、每次运行你所设计的处理器调度程序之前,为每个进程任意确定它的“要求运行时间”。 把五个进程按顺序排成循环队列,用指针指出队列连接情况。另用一标志单元记录轮到运行的进程。 (3)、处理器调度总是选择标志单元指示的进程运行。由于本实验是模拟处理器调度的功能,所以,对被选进程并不实际启动运行 (4)、进程运行一次后,应把该进程进程控制块的指针值送到标志单元,以指示下一个轮到运行的进程。同时,应判断该进程的要求运行时间与已运行时间,若该进程要求运行时间≠已运行时间,则表示它尚未执行结束,应待到下一轮时再运行。若该进程的要求运行时间=已运行时间,则表示它已经执行结束,应把它的状态修改为“结束”(E)且退出队列。此时,应把该进程进程控制块的指针值送到前面一个进程的指针位置。 (5)、若“就绪”状态的进程队列不为空,则重复上面(4)和(5)的步骤,直到所有进程都成为“结束”状态。 (6)、在所设计的称序应有显示或打印语句,能显示或打印每次被选进程进程名以及运行一次后进称对列的变化。 (7)、为五个进程任意确定一组“要求运行时间”,启动所设计的处理器调度程序,显示或打印逐次被选进程进程名以及进程控制块的动态变化过程。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kk.巴扎嘿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值