操作系统——处理机调度

处理机调度基本概念

在多道程序中,进程的数量往往多与处理机的数量,这个时候如何高效公平的给进程分配处理机资源,实现进程之间并发执行就成了问题,从而诞生了处理机调度,是多道程序操作系统的基础,是操作系统的核心问题

调度乘次

一个作业从提交到完成,往往要经历三级调度
1.作业调度:(高级调度)主要任务是按照一定原则从外存上处于后备状态的作业中挑选一个(或多个)作业,给他们分配系统资源(内存,I\O设备等)并建立相应的进程,使他们有争夺处理机的权利。作业调度是内存与辅存之间的调度,对于每个作业做调入一次调出一次,多道批处理系统大多有作业调度,其他的可以没有。(后备进就绪)调度次数少
2.中级调度:(内存调度)其作用是提高内存利用率和系统吞吐量。因此,将那些暂时不能运行的进程调至外存等待,此时进程称为挂起状态,当他们具有运行条件且内存中有空间时,中级调度来将其调入内存,修改为就绪态(就绪进挂起阻塞,阻塞挂起进就绪)调度次数中等
3.进程调度(低级调度):按照某种策略把就绪态的进程分配个处理机处理,这是进程调度中最基础的调度,在一般的操作系统中都必须配置进程调度。进程调度频率高(十几毫秒一次)(就绪进处理机)调度次数最多
在这里插入图片描述

调度的时机,切换与过程

3种不能进行调度的情况

进程调度和切换程序是系统内核程序,请求调度的事件发生后,才可能运行进程调度,调度了新的就绪程序之后,才进行进程间的切换,理论上这3件事应该顺序执行的,但在实际运行过程中,若发生了引起进程调度的因素,不一定能够马上进行进程调度,一般有这几种情况
1.在处理中断的过程中。中断处理过程复杂,一般很难实现进程奇幻,且中断处理是系统工作的一部分,逻辑上不属于某一进程,不应该被剥夺处理机资源。
2.进程在操作系统内核程序临界区中。进入系统内核临界区后,需要独占式的访问共享数据,理论上必须加锁,防止其他并行程序进入,在解锁前不应切换到其他进程。(这里的临界区只能是系统内核临界区,不能是其他设备资源临界区)
3.其他需要完全屏蔽中断的原子操作中。如加锁,解锁,中断现场保护,恢复等原子操作。在原子操作中中断都要屏蔽,更别说进行进程调度和切换了。
若在上述情况下需要进程调度,则设置系统的请求调度标志,直到上述过程结束后才能进行进程调度与切换。

2种应该进行进程调度与切换的情况

1.发生引起调度条件且当前进程无法继续运行下去时,可以马上进行调度与切换。(非剥夺方式调度)
2.中断处理结束或自陷处理结束后,返回被中断程序的用户态程序执行现场前,若有请求调度标志,则马上进行调度。(剥夺方式调度)

不能进行进程调度和可以进行进程调度的情况

进程的切换与过程

进程切换往往紧跟着进程调度发生,要求保存原进程当前切换点的现场信息,恢复被掉调度进程的现场信息,进程切换时,操作系统内核将源程序的现场信息推入当前进程内核堆栈来保护特闷,并更新堆栈指针。
在这里插入图片描述

进程调度的两种调度方式

1.非剥夺调度方式:非剥夺调度方式是指当一个进程在处理机上运行时,即使有更重要或紧迫的进程进入就绪序列,仍然放正在执行的进程继续执行,直到该进程完成或发生某种时间而进入阻塞态,才把处理机分配给重要的进程。(这种方式实现简单,开销小,适用于大多数批处理系统,但不能用于分时系统和大多数实时系统)
2.剥夺调度方式:剥夺调度方式是指当一个进程在处理机上执行时,若有更重要或紧急的进程需要使用处理机,则立即暂停正在执行的进程,处理机分配给这个更重要的进程。(这种方式对提高吞吐率和相应效率有好处)在这里插入图片描述

调度的基本准则

处理机调度的基本准则有一下几个
1.CPU利用率:CPU是计算机系统中最重要和昂贵的资源之一,所以应尽可能的使用cpu保持忙的状态,使cpu利用率最高。
2.系统吞吐量:表示单位时间内CPU完成作业的数量。长作业需要消耗较长时间的处理机时间,因此会降低系统的吞吐量。而对于短作业而言所需要消耗的处理机时间短,因此能提高系统吞吐量,调度算法和方式的不同,也不会对系统的吞吐量产生较大的影响。
3.周转时间:周转时间是指从作业提交到作业完成经历的时间。是作业等待,在就绪队列中排队,在处理机上运行及进行输入/输出的总和。周转时间=作业提交时间-作业完成时间
平均周转时间:指多个作业的平均周转时间=(作业一周转时间+作业二周转时间+……+作业n周转时间)/n
带权周转时间:是指作业周转时间和实际运行时间的比值=作业周转时间/作业实际运行时间
平均带权周转时间:多个作业的带权周转时间的平均值
4.等待时间:等待时间值进程处于等待处理机状态的时间和,等待时间越长用户满意度越低,衡量一个调度算法的优劣,常常只需要简单地考复查等待时间。
5.相应时间:响应时间值从用户提交到系统首次产生响应所用的时间。在交互式系统中,周转时间不可能是最好的评价标准,一般采用响应时间做为衡量调度算法的重要准则之一。
在这里插入图片描述

经典的调度算法

适用于早期批处理系统调度算法

先来先服务(FCFS)调度算法

FCFS是最简单的调度算法,既可以用于作业调度也可以用于进程调度,在作业调度中选择最先进入作业队列的进程进入就绪态,进程调度中选择最先进入就绪态的进程进入处理机运行在这里插入图片描述
在这里插入图片描述

短作业优先(SJF)算法

短作业优先算法就是指让短运行时间的作业优先进入处理机运行,短作业分为抢占式短作业优先算法(SRTN)和非抢占式短作业优先算法(SPF)

SPF非抢占式

在这里插入图片描述

抢占式短作业优先算法(SRTN )

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

高响应比优先算法

这是对FCFS和SJF的一种综合平衡
通过计算每个进程的响应比来判断那个进程先上处理机
在这里插入图片描述
在这里插入图片描述

以上三种方法的比较(适用于早期批处理系统)

在这里插入图片描述

时间片轮转调度算法、优先级调度算法、多级反馈队列调度算法 (适用于交互式系统)

时间片轮转调度算法

时间片轮转调度适用于分时系统,每个进程执行时间片大小的时间后让就绪队列后面的进程运行,若前一个进程没有运行完则重新进入就绪队列等待下一个时间片
在这里插入图片描述

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

优先级调度算法

根据有优先级判断优先上处理机的进程

非抢占式优先级调度算法

在这里插入图片描述

抢占式优先级调度算法

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

多级反馈队列调度算法(融合了以上几种算法的优点)

多级反馈队列设置不同优先级的队列,优先级高的队列中的进程优先使用处理机,优先级越高的队列时间片越短,在经过了一级队列后的进程进入下一级队列(二级队列),若一级队列为空后,运行第二机队列进程,若第二级队列进程运行过程中,一级队列进入新进程则抢占处理机,优先运行第一队列进程,被抢占的进程重新回到自己的进程队列中,每次运行完自己的时间片都进入下一级队列,到最后一级队列中的进程运行完时间片之后继续在最后一级队列对头等待下一次分配时间片
在这里插入图片描述

注意:如果在二级队列及其二级队列以下的队列执行cpu的过程中,进来了新进程,新进程会进入一级队列,cpu会优先运算更高级队列的进程,所以这个时候新进程会抢占运来在cpu上运行的进程。
在这里插入图片描述
在这里插入图片描述

真题

2012:
进程在结束时,创建进程后,系统调用完成并返回用户态时,都可以进行处理机调度。包括在进程处于临界区时也可以进行处理机调度

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值