第三章 处理器调度与死锁
- 3.1 处理机调度的基本概念
- 3.2 调度算法
- 3.3 实时调度
- 3.4 多处理机系统中的调度
- 3.5 产生死锁的原因和必要条件
- 3.6 预防死锁的方法
- 3.7 死锁的检测与解除
本章重点
- 1、掌握处理机调度的基本概念和调度算法
- 2、掌握银行家算法避免死锁的方法
3.1 处理机调度的基本概念
一、高级、中级和低级调度
二、调度队列模型
三、选择调度方式和调度算法的若干准则
作业和进程
批处理作业的调度
- 作业调度:
使作业进入主存储器。
处于后备状态的作业在系统资源满足的前提下可以被作业调度选中进入内存计算。 - 进程调度:
使作业进程占用处理器。
只有处于执行状态的作业才真正构成进程获得计算的机会。
一个批处理作业,从进入系统并驻留在外存的后备队列上开始,直至作业运行完毕,可能要经历以下三级调度
- 1、高级调度(作业调度)
- 2、中级调度
- 3、低级调度(进程调度)
1、高级调度
对于用户来说,总希望自己作业的周转时间尽可能的少,而对于系统来说,则希望作业的平均周转时间尽可能少,这样有利于提高CPU的利用率和系统的吞吐量。
主要功能:
根据某种算法,决定将外存上处于后备队列中的哪几个作业调入内存 ,为它们创建进程,分配必要的资源,并将它们放入就绪队列。
在每次执行作业(高级)调度时,都须作出两个决定:
- 接纳多少作业–每次接纳多少作业进入内存,取决于多道程序度,也就是允许多少个作业同时在内存中运行。
- 接纳哪些作业–应接纳哪些作业从外存调入内存,取决于所采用的调度算法。如先来先服务,短作业优先等,后面章节会详细介绍。
在批处理系统中,因作业进入系统后先驻留在外存,故需要有作业调度。
在分时系统中为做到及时响应,命令或数据被直接送入内存,故不需要作业调度。
在实时系统中,一般不需要作业调度。
2、低级调度
1. 进程调度(低级调度)的功能
2. 进程调度的三个基本机制
为了实现进程调度,应具有如下三个基本机制:
- (1)排队器
- (2)分派器(分派程序)
- (3)上下文切换机制
进程调度可采用下述两种调度方式:
非抢占方式
抢占方式
1、非抢占方式
一旦把处理器分配给某进程后,便让该进程一直执行,直至该进程完成或发生某事件而被阻塞时,才把处理机分配给其他进程,决不允许进程抢占已经分配出去的处理机。
评价:实现简单、系统开销小;适用于大多数的批处理OS,但在要求比较严格的实时系统中,不宜采用这种调度方式。
在采用非抢占调度方式时,可能引起进程调度的因素有:
- 1、进程执行完毕,或因发生某事件而不能继续执行
- 2、执行中的进程因提出I/O请求而暂停执行
- 3、执行了某种原语操作:如P操作、Block原语
2、抢占方式
3、中级调度(对换功能)
- 又称中程调度。引入目的是为了提高内存利用率和系统吞吐量。应使那些暂时不能运行的进程不再占用宝贵的内存资源,而将它们调到外存去等待,把此时的进程状态称为就绪驻外存状态或者挂起状态。
- 当这些进程又具备运行条件、且内存又稍有空闲时,由中级调度来决定把外存上的那些具备运行条件的就绪进程,重新调入内存,并修改其状态为就绪状态,挂在就绪队列上等待进程调度。
三种调度的比较
- 进程调度的运行频率最高,在分时系统中通常是10~100ms进行一次进程调度,因而进程调度算法不能太复杂,以免占用太多的CPU时间。
- 作业调度时发生在一个作业运行完毕,退出系统,而需要重新调度一个作业进入内存时,故作业调度的周期较长,大约几分钟一次。因而允许作业调度算法花费较多的时间。
- 中级调度的运行频率,介于进程调度和作业调度之间。
二、调度队列模型
不论高级、中级还是低级调度,都涉及到进程队列,由此形成了三种类型的调度队列模型:
- 1、仅有进程调度的调度队列模型
- 2、具有高级和低级调度的调度队列模型
- 3、同时具有三级调度的调度队列模型
1、仅有进程调度的调度队列模型
- 当进程完成,释放CPU,进程调度将CPU分配给下一个就绪队列里的进程
- 当进程执行的时间片完,则释放CPU,将该进程重新放入就绪队列,开始将CPU分配给就绪队列里的下一个进程,进行执行。
- 当进程遇到等待事件时,进程将自动阻塞,放入阻塞队列,将CPU分配给就绪队列中的下一个进程,当等待事件发生时,被阻塞的进程从阻塞队列回到就绪队列。
2、具有高级和低级调度的队列模型
在仅有进程调度的调度队列模型中加入了作业调度,同时阻塞队列的数量也增多了。根据等待事件的不同建立了不同的阻塞队列。
最常用的是最高优先权优先调度算法
- (1)上一模型中较多采用的是FIFO队列形式
- (2)使阻塞队列不至于过长,从而提高对阻塞队列的操作效率
3、具有三级调度的队列模型
当在系统中引入中级调度后,可以把进程的就绪状态分为内存就绪和外存就绪,把阻塞状态分为内存阻塞和外存阻塞两种状态。
在调出操作的作用下,可使进程状态由内存就绪转变为外存就绪,由内存阻塞转变为外存阻塞;在中级调度的作用下,又可使外存就绪转变为内存就绪。
三、选择调度方式和调度算法的若干准则
在一个OS的设计中,应如何选择调度方式和算法,很大程度上取决于OS的类型和目标。
如在批处理系统、分时系统和实时系统中,通常都采用不同的调度方式和算法。选择的准则,有的是面向用户的,有的是面向系统的。
1、面向用户的准则
周转时间短(评价批处理系统的指标)
周转时间 平均周转时间
带权周转时间 平均带权周转时间
响应时间快: 响应时间(评价分时系统的指标)
截止时间的保证: 截止时间(评价实时系统的指标)
优先权准则
(1)周转时间
(2)平均周转时间
Ti指的是第i个用户的作业周转时间
(3)带权周转时间
(5)响应时间
(6)截止时间
是指某任务必须开始执行的最迟时间,或者必须完成的最迟时间。
对于严格的实时系统,其调度方式和调度算法必须能保证这一个点,否则将可能造成难以预料的后果。
2、面向系统的准则
- 系统吞吐量高(评价批处理系统的指标)
- 处理机利用率好
- 各类资源平衡利用