操作系统-3-调度算法

操作系统

一、线程调度(以什么规则处理任务)

当有一堆任务要处理,但是由于资源有限,这些事情无法同时处理,这就需要确定某种规则来决定处理这些任务的顺序,这就是“调度”研究的问题。

在多道程序系统中,进程的数量往往是多于处理机的个数的,这样不可能同时并行的处理各个进程。

处理机调度就是从就绪队列中按照一定的算法选择一个进程并将处理机分配给它进行,以实现进程的并发执行。

一般说来,作业从进人系统到最后完成,可能要经历三级调度:高级调度、中级调度和低级调度。

高级调度(作业调度)

高级调度:又称作业调度。其主要功能是根据一定的算法,从输人的一批作业中选出若干个作业,分配必要的资源,如内存、外设等,为它建立相应的用户作业进程和为其服务的系统进程(如输人、输出进程),最后把它们的程序和数据调人内存,等待进程调度程序对其执行调度,并在作业完成后作善后处理工作。

由于内存有限,有时候无法将用户提交的作业全部放入内存,因此就需要确定某种规则来决定将作业调入内存的顺序。

高级调度(作业调度): 按照一定的原则从外存上处于后备队列的作业中挑选一个(或多个)作业,给他们分配内存等资源,并建立相应的进程(建立PCB),以使它们获得竞争处理机的权利。

高级调度是辅存(外存)与内存之间的调度,每个作业只调入一次,调出一次,作业调入的时候会建立相应的PCB,作业调出的时候撤销PCB,高级调度主要是调入的问题,因为只有调入的时机需要操纵系统来确定,但是调出的时机必然是作业运行结束才调出

中级调度(内存调度)

为了使内存中同时存放的进程数目不至于太多,有时就需要把某些进程从内存中移到外存上,以减少多道程序的数目,为此设立了中级调度。特别在采用虚拟存储技术的系统或分时系统中,往往增加中级调度这一级。所以中级调度的功能是在内存使用情况紧张时,将一些暂时不能运行的讲程从内存对换到外存上等待。当以后内存有足够的空闲空间时,再将合适的进程重新换人内存,等待进程调度。引人中级调度的主要目的是为了提高内存的利用率和系统吞吐量。它实际上就是存储器管理中的对换功能。

引入虚拟存储技术之后,可将暂时不能运行的进程调至外存等待,等它重新具备了运行条件且内存又稍有空闲的时候,再重新调入内存

这么做的目的是为了提高内存利用率和系统吞吐量。

暂时调到外存等待的进程状态为挂起状态。需要注意的是,PCB不会一起调到外存,而是会常驻内存。

中级调度(内存调度),就是决定将哪个处于挂起状态的进程重新调入内存。

低级调度(进程调度)

低级调度(进程调度):主要任务就是按照某种方法和策略从就绪队列中选择一个进程,将处理机分配给它。

进程调度是操作系统中最基本的一个调度,在一般的操作系统中都必须配置进程调度。

在这里插入图片描述

三级调度的联系

作业调度从外存的后备队列中选择一批作业进入内存,为它们创建进程,这些进程被送入到就绪队列,进程调度从就绪队列中选择一个进程并把状态改成运行,把cpu分配给它。

总结

在这里插入图片描述

二、进程调度的时机、切换与过程、方式

在这里插入图片描述

1、进程调度的时机

进程调度(低级调度):按照某种算法从就绪队列中选择一个进程为其分配处理机。

需要进行进程调度与切换的情况:

  • 当前运行的进程主动放弃处理机
    1、进程正常终止
    2、运行过程中发生异常而终止
    3、进程主动请求阻塞(如等待IO)
  • 当前运行的进程被动放弃处理机
    1、分给进程的时间片用完了
    2、有更紧急的事需要处理(如IO中断)
    3、有更高优先级的进程进入就绪队列

不能进行进程调度和切换的情况:

  • 1、在处理中断的过程中,中断处理过程复杂,与硬件密切相关,很难做到在中断处理过程中进行进程切换。
  • 2、进程在操作系统内核程序临界区
  • 3、在原子操作过程中。

2、进程调度的方式(非抢占式和抢占式)

  • 非抢占式:只允许进程主动放弃处理机,即使有更紧急的任务到达,当前进程仍然会继续使用处理机。
  • 抢占式:当一个进程在处理机上执行的时候,如果有更重要或者更紧迫的进程需要使用处理机,则立即暂停正在执行的进程,将处理机分配给更紧迫的那个进程。

进程切换的过程主要完成了:

  • 1、对原来运行进程各种数据的保存
  • 2、对新的进程各种数据的恢复

进程切换是有代价的,如果过于频繁,会使系统的效率降低。

三、调度算法的评价指标

在这里插入图片描述

1、CPU利用率

利用率=忙碌时间/总时间

2、系统吞吐量(单位时间内完成的作业的数量)

系统吞吐量:单位时间内完成的作业的数量。
系统吞吐量=总共完成了多少道作业/总共花了多少时间

3、周转时间(作业完成时间-作业提交时间)

从作业被提交系统开始到作业完成为止的这段时间间隔。
周转时间=作业完成时间-作业提交时间

4、等待时间

处于等待处理机状态的时间之和。

5、响应时间

从用户提交请求到首次产生响应所用的时间。

四、调度算法

1、先来先服务(FCFS)

等待时间越长的进程越优先得到服务。
各种调度算法的学习思路:

  • 1、算法思想
  • 2、算法规则
  • 3、这种调度算法是用于作业调度还是进程调度。
  • 4、抢占式、非抢占式
  • 5、优点和缺点
  • 6、是否会导致饥饿

在这里插入图片描述

在这里插入图片描述

2、短作业优先(SJF,Shortest Job First)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

能不能设计一个算法,既考虑各个作业等待时间,又考虑运行时间?就提出了高响应比优先算法

4、高响应比优先(HRRN,Highest Response Ratio Next,每次调度时计算响应比,响应比=(等待时间+要求服务时间)/要求服务时间)

在这里插入图片描述

在这里插入图片描述

总结

在这里插入图片描述

五、调度算法二

在这里插入图片描述

1、时间片轮转调度算法(RR,Round-Robin,抢占式)

公平轮流的为各个进程服务,让每个进程在一定时间间隔内都可以得到响应。

默认新到达的进程先进入就绪队列,刚下处理机的进程跟在后面。

时间片为2的情况:
在这里插入图片描述
时间片为5的情况:
在这里插入图片描述

如果时间片太大,使得每个进程都可以在一个时间片内就完成,则时间片轮转调度算法就退化成先来先服务调度算法。并且会增大响应时间,因此时间片不能太大。

在这里插入图片描述

2、优先级调度算法

非抢占:
在这里插入图片描述

抢占:
在这里插入图片描述
根据优先级是否可以动态改变,可以将优先级分为:静态优先级和动态优先级两种。

在这里插入图片描述

3、多级反馈队列调度算法(抢占式,若时间片用完进程没结束,会进入下一级队列队尾)

在这里插入图片描述

设置多级就绪队列(多个队列的优先级不同,分给各个队列的时间片也不同),各级队列优先级从高到低,时间片从小到大。

在这里插入图片描述
若时间片用完进程没结束,会进入下一级队列队尾。

在这里插入图片描述

总结

在这里插入图片描述

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值