一、概述
1.1了解调度的层次
- 调度是指,在一个队列中,按照某种方法(算法),选择一个合适的个体的过程。
- 进程调度的功能就是按一定策略、动态地把CPU分配给处于就绪队列中的某一进程,并使之执行。
- 作业调度(高级调度):内存与外存之间的调度
- 内存调度(中级调度):挂起态和就绪态间的相互转换
- 进程调度(低级调度):就绪态转到运行态
高级调度
高级调度(长程调度或作业调度)仅在批处理,外存上处于后备队列的作业调入内存
(1)接纳多少作业到内存:从磁盘的后备队列到内存
(2)接纳哪些作业到内存:通过调度算法选择
抢占的原则有:
(1)优先权原则。
(2) 短作业(进程)优先原则。
(3) 时间片原则。
低级调度
低级调度(进程调度或短程调度):就绪队列中选哪个进程应获得处理机
作业控制块JCB
(1)进程调度的任务:保存cpu的现场;选取要执行的进程执行;把处理机分配给进程
(2)进程调度实现:排队器:队列等数据结构;分派器:调度程序;上下文切换器
(3)进程的调度方式::
1)非抢占方式:仅在进程运行完或者阻塞才进行调度
2)抢占方式:进程在运行过程中可以被抢占CPU,抢占的原则:优先级和时间片
引起进程调度的原因:
①正在运行的进程运行完毕;
②运行中的进程要求I/O操作;
③执行某种原语操作(如P操作)导致进程阻塞;
④一个比正在运行进程优先级更高的进程申请运行(抢占调度方式);
⑤分配给运行进程的时间片已经用完等等。
中级调度
中级调度(内存调度):暂时不能执行的进程调入外存等待(仅了解)
1.2衡量指标
(1)资源利用率:资源处于忙状态时间所占的百分比
(2)吞吐量:单位时间内完成的进程数量
(3)周转时间:进程从初始化到结束(包括等待)的总时间
(4)等待时间:进程在就绪队列中的总时间。或者用带权周转时间:带权周转时间=周转时间/服务时间
(5)响应时间:从提交请求到产生响应所花费的总时间
1.3调度算法
FCFS
特点:实现简单、公平
缺点:没考虑任务特性,周转时间(平均等待时间)可以提高
会计算平均周转时间:计算时,要先找到调度顺序,然后是每个进程的完成时间
FCFS与SJF 举例
SJF
SJF(SPF)、 SRJF
是从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。
优点:有最小的平均周转时间
缺点:不公平,可能出现进程饥饿,未考虑作业的紧迫程度,对长作业不利
RR
基于时间片的轮转调度算法是一种常见的CPU调度算法,它将CPU时间划分成一定大小的时间片,每个进程在该时间片内运行,然后轮转到下一个进程。如果一个进程不能在该时间片内完成任务,则将其放回就绪队列,等待下一个时间片重新运行。
RR:按时间片来轮转调度
易于满足交互式任务
高优先级优先
非抢占式优先权算法
在这种方式下,系统一旦把处理机分配给就绪队列中优先权最高的进程后,该进程便一直执行下去,直至完成; 或因发生某事件使该进程放弃处理机时,系统方可再将处理机重新分配给另一优先权最高的进程。这种调度算法主要用于批处理系统中;
抢占式优先权调度算法
在这种方式下,系统同样是把处理机分配给优先权最高的进程,使之执行。但在其执行期间,只要又出现了另一个其优先权更高的进程,进程调度程序就立即停止当前进程(原优先权最高的进程)的执行,重新将处理机分配给新到的优先权最高的进程。
如何确定优先级:
静态优先级:进程类型、对资源的需求、根据用户的特点
静态优先级问题是不公平
动态优先级:优先级动态调整,随着等待时间增长而不断增高
问题:算法开销
优先权算法例题
多级队列调度
实现简单
多级反馈队列
结合上面算法优点,简单实用的算法
实时调度
FCFS、SJF(SPF)、 SRJF、RR会计算平均周转时间
1.4死锁
死锁的概念:
多个进程因竞争资源而造成的一种相互等待的局面,若无外力作用,进程将无法向前推进
注意:僵局,是局部现象,可以传播
死锁产生的原因
(1)竞争资源:资源是不可被抢占的临界资源
(2)进程推进次序不当
死锁产生的必要条件
- 互斥
- 请求和保持
- 不可抢占
- 循环等待(出现了环)
处理方法
预防、避免、检测与接触、忽略
死锁的预防-破坏必要条件
1、互斥:不能破坏,资源的固有属性
2、请求和保持:比如:所需要的资源一次性全分配
3、不可抢占:允许抢占,会出现资源反复申请释放、推迟进程的执行
4、循环等待:对资源排序,只能按序申请资源。
死锁的避免 (银行家算法)
引入安全状态的概念。
安全状态:如果系统中的所有进程存在一个可使全部完成的执行序列P1,…Pn,则称系统处于安全状态。不存在这样的全部执行序列时就是不安全状态
安全状态一定没有死锁,不安全状态可能会产生死锁
银行家算法
设Requesti是进程Pi的请求向量,如果Requesti[j]=K,表示进程Pi需要K个Rj类型的资源。当Pi发出资源请求后,系统按下述步骤进行检查:
(1) 如果Requesti[j]≤Need[i,j],便转向步骤2;否则认为出错,因为它所需要的资源数已超过它所宣布的最大值。
(2) 如果Requesti[j]≤Available[j],便转向步骤(3);否则, 表示尚无足够资源,Pi须等待。
(3) 系统试探着把资源分配给进程Pi,并修改下面数据结构中的数值: Available[j]∶=Available[j]-Requesti[j]; Allocation[i,j]∶=Allocation[i,j]+Requesti[j]; Need[i,j]∶=Need[i,j]-Requesti[j];
(4) 系统执行安全性算法,检查此次资源分配后,系统是否处于安全状态。若安全,才正式将资源分配给进程Pi,以完成本次分配;否则, 将本次的试探分配作废,恢复原来的资源分配状态,让进程Pi等待。
(2) P1请求资源:P1发出请求向量Request1(1,0,2),系统按银行家算法进行检查: ① Request1(1, 0, 2)≤Need1(1, 2, 2)
② Request1(1, 0, 2)≤Available1(3, 3, 2)
③ 系统先假定可为P1分配资源,并修改Available, Allocation1和Need1向量,由此形成的资源变化情况如图 3-15 中的圆括号所示。
④ 再利用安全性算法检查此时系统是否安全。
死锁的检测与解除
资源分配图
理解资源分配图的顶点、边的含义,比如:进程节点、资源节点、分配边、请求边,孤立节点、阻塞节点(有请求边,但可用资源不够用的进程节点)。
2、资源分配图的简化:在资源分配图中找既不是阻塞也不是孤立的进程节点,可得到资源完成;完成后释放资源,即删除它的分配边和请求边,使成为孤立节点;重复为之,若能消去所有的边,所有节点都为孤立节点,则资源分配图为可完全简化的,反之为不可完全简化的。
3、死锁定理:死锁状态的充分条件,当且仅当该状态的资源分配图是不可完全简化的。
4、死锁的检测的解除(了解)
检测过程就是简化资源分配图,实现算法和银行家算法类似的,开销较大,有时候完全忽略死锁,不处理死锁。
二、习题
1.时间片轮转调度算法是为了()。
A.多个终端能够得到系统及时响应
B.使系统变得高效
C.优先级较高的进程得到及时响应
D.需要CPU时间最少的进程最先做.
答案:A。 时间片轮转调度算法是一种基于时间片的调度算法,其主要目的是保证多个终端用户能够得到系统及时响应,从而提高系统的交互性。当一个进程占用CPU的时间达到了限定的时间片长度后,便会被系统强制中断,然后放入后备队列,让其他进程继续执行。这种算法能够确保每个进程都能够及时获得CPU的执行时间,从而提高系统的效率和响应速度。
2.下面有关选择进程调度算法的准则中不正确的是()。·
A.尽快响应交互式用户的请求
B.尽量提高处理器利用率
C.尽可能提高系统吞吐量
D.适当增长进程就绪队列的等待时间
D.适当增长进程就绪队列的等待时间是不正确的,因为进程等待时间越长,用户体验越差。正确的准则是尽可能减少进程等待时间并提高系统吞吐量。
3.设有4个作业同时到达,每个作业的执行时间均为2h,它们在一台处理器上按单道运行,则平均周转时间为()。。
A.1h
B.5h
C.2.5h
D.8h.
B5h。
假设这4个作业按照顺序分别为A、B、C、D。如果按照单道运行,那么每个作业都需要等待前一道作业执行完毕后才能开始执行。因此,作业A的等待时间为0,作业B的等待时间为2h,作业C的等待时间为4h,作业D的等待时间为6h。
则这4个作业的平均周转时间为为:
(2+4+6+8)/4=5h
4.若每个作业只能建立一个进程,为了照顾短作业用户,应采用(B):为了照顾紧急作业用户,应采用(E):为了能实现人机交互,应采用(C):而能使短作业.长作和交互作业用户都满意,应采用(D)。。
A.FCFS调度算法
B.短作业优先调度算法
C.时间片轮转调度算法
D.多级反馈队列调度算法
E.剥夺式优先级调度算法
答案:
A. FCFS调度算法只考虑作业的到达顺序,不能够照顾短作业用户。
B. 短作业优先调度算法可以照顾短作业用户,因为它优先调度执行时间短的作业。
C. 时间片轮转调度算法可以实现人机交互,因为它将CPU划分为时间片,每个进程轮流执行。
D. 多级反馈队列调度算法可以同时照顾短作业、长作业和交互作业用户,因为它将作业划分为多个队列,并根据作业的特点进行调度。
E. 剥夺式优先级调度算法只考虑优先级高的进程,不能照顾紧急作业用户。
因此,正确答案为B短作业优先调度算法照顾短作业用户,E剥夺式优先级调度算法照顾紧急作业用户,C时间片轮转调度算法实现人机交互,D多级反馈队列调度算法照顾短作业、长作业和交互作业用户。
5.设有三个作业,其运行时间分别是2h,5h,3h,假定它们同时到达,并在同一台处理器上以单道方式运行,则平均周转时间最小的执行顺序是()。·
A.J1,J2,J3
B.J3,J2,J1
C.J2,J1,J3
D.J1,J3,J2.
根据最短作业优先(SJF)调度算法,应该先运行运行时间短的作业。因此,执行顺序应该是J1,J3,J2,即选项D。
6.下列调度算法中,()调度算法是绝对可抢占的。
A.先来先服务
B.时间片轮转
C.优先级
D.短进程优先
答案:B. 时间片轮转。
解析:
先来先服务算法是非可抢占的,一旦进程开始运行就一直运行到结束,不会被其他进程抢占CPU资源。
优先级调度算法可以是可抢占的或非可抢占的,取决于是否存在更高优先级的进程需要运行。
短进程优先算法也是非可抢占的,一旦进程开始运行就一直运行到结束,不会被其他进程抢占CPU资源。
时间片轮转算法是绝对可抢占的,每个进程分配一个时间片运行,当时间片用完时,进程会被抢占,被放回就绪队列等待执行。
7.【2011年计算机联考真题】下列选项中,满足短作业优先且不会发生饥饿现
象的是()调度算法。
A.先来先服务
B.高响应比优先
C.时间片轮转
D.非抢占式短作业优先
8.死锁的避免是根据()采取措施实现的。。
A.配置足够的系统资源
B.使进程的推进顺序合理。
C.破坏死锁的四个必要条件之一
D.防止系统进入不安全状态
AB与题意不符,C是预防
8.某系统中有三个并发进程都需要四个同类资源,则该系统必然不会发生死锁
的最少资源是()。
A.9
B.10
C.11
D.12.
3个进程要想不死锁 每个进程都需要4个同类资源 所以。。
只要每个进程都有3个资源 另外一个在给一个额外的资源。 那么3个进程中有一个可以运行。。运行完以后 释放资源然后其余的 进程在申请资源就可以了啊 。
9.采用资源剥夺法可以解除死锁,还可以采用()方法解除死锁。·
A.执行并行操作
B.撤销进程
C.拒绝分配新资源
D.修改信号量
资源剥夺法允许一个进程强行剥夺其他进程所占有的系统资源。而撤销进程是强行释放一个进程己占有的系统资源,与资源剥夺法同理,都是通过破坏死锁的“请求和保持”条件来解除死锁。拒绝分配新资源只能维持死锁的现状,无法解除死锁。
10.以下有关资源分配图的描述中正确的是()。~
A.有向边包括进程指向资源类的分配边和资源类指向进程申请边两类
B.矩形框表示进程,其中圆点表示申请同一类资源的各个进程
C.圆圈节点表示资源类
D.资源分配图是一个有向图,用于表示某时刻系统资源与进程之间的状态
在资源分配图中,用圆圈代表一个进程,用矩形框代表一类资源。由于一种类型的资源可能有多个,用矩形框中的一个点代表一类资源中的一个资源。从进程到资源的有向边叫请求边,表示该进程申请一个单位的该资源;从资源到进程的边叫分配边,表示该资源已经有一个被分配给了该进程。由上所述知D选项为正确答案。
11.死锁检测时检查的是()。·
A.资源有向图
B.前驱图
C.搜索树
D.安全图.
死锁检测一般采用两种方法:资源有向图法和资源矩阵法。前驱图只是说明进程之间的同步关系,搜索树用于数据结构的分析,安全图并不存在。
12.系统的资源分配图在下列情况中,无法判断是否处于死锁的情况有()。。
I.出现了环路
II.没有环路
III.每种资源只有一个,并出现环路
IV.每个进程节点至少有一条请求边
A.I、II、III、IV
B.I、III、IV
C.I、IV
D.以上答案都不正确
解析:
I:出现了环路,只是满足了循环等待的必要条件,但是并不能保证一定出现死锁。
II:没有环路,说明破坏了循环等待条件,所以一定不会发生死锁。
III:每种资源只有一个,又出现了环路,这是死锁的充分必要条件,所以,一定会有死锁的出现。
IV:每个进程至少有一条请求边的时候,如果资源充足,则不会发生死锁,但若资源不充足,就有发生死锁的可能。故只有I,IV可以确定是否产生死锁