第三章处理机调度与死锁
1.高级调度与低级调度的主要任务是什么? 为什么要引入中级调度?
(1)高级调度又称为作业调度。它是批处理系统中使用的一种调度。其主要任务是按照某种算法从外存的后备队列上选择一个或多个作业调入内存,并为其创建进程、分配必要的资源,然后再将所创建的进程控制块插入就绪队列中。 (2)低级调度又称进程调度。它是距离硬件最近的一级调度。其主要任务是按照某种算法从就绪队列上选择一个(或多个)进程,使其获得CPU。
(3)引入中级调度的目的是为了提高内存利用率和系统吞吐量。其功能是,让那些暂时不能运行的进程不再占用宝贵的内存资源,而是调其到外存上等候。此时的进程状态为挂起状态。当这些进程重新具备运行条件且内存空闲时,由中级调度选择一部分挂起状态的进程调入内存并将其状态变为就绪状态。
2. 处理机调度算法的共同目标是什么? 批处理系统的调度目标又是什么? 共同目标:资源利用率,公平性,平衡性,策略强制执行。
批处理系统的调度目标:平均周转时间短,系统吞吐量高,处理机利用率高。
6.为什么要引入高响应比优先调度算法?它有何优点?
在批处理系统中,FCFS算法所考虑的只是作业的等待时间,而忽视了作业的运行时间。而SJF算法正好与之相反,只考虑作业的运行时间,而忽视了作业的等待时间。高响应比优先调度算法则是既考虑了作业的等待时间,又考虑作业运行时间的调度算法,因此既照顾了短作业,又不致使长作业的等待时间过长,从而
改善了处理机调度的性能。
7.试说明低级调度的主要功能。
保存处理机的现场信息、按某种算法选取进程、把处理机分配给进程。
12.试比较FCFS和SJF两种进程调度算法。
相同点:两种调度算法都可用于作业调度与进程调度
不同点:FCFS调度算法每次都从后备队列中选择一个或多个最先进入该队列的作业,将它们调入内存、分配资源、创建进程、插入到就绪队列。该算法有利于长作业/进程,不利于短作业/进程。
SJF算法每次调度都从后备队列中选择一个或若干个运行时间最短的作业,调入内存中运行。该算法有利于短作业/进程,不利于长作业/进程。
13.在时间片轮转法中,应如何确定时间片的大小?
时间片应略大于一次典型的交互需要的时间。一般因考虑三个因素:系统对相应时间的要求、就绪队列中进程的数目和系统的处理能力。
20.按调度方式可将实时调度算法分为哪几种?
非抢占式和抢占式。非抢占式又分为非抢占式轮转调度算法和非抢占式优先调度算法,抢占式又分为基于时钟中断的抢占式优先级调度算法和立即抢占的优先级调度算法。
27.何谓死锁?产生死锁的原因和必要条件是什么?
死锁是指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进。 产生死锁的原因为竞争资源和进程间推进顺序非法。
其必要条件是:互斥条件、请求和保持条件、不剥夺条件、环路等待条件。
29.请详细说明可通过哪些途径预防死锁。
(1)摈弃“请求和保持”条件,就是如果系统有足够资源,便一次性把进程需要的所有资源分配给它;
(2)摈弃“不剥夺”条件,就是已经拥有资源的进程,当它提出新资源请求而不能立即满足时,必须释放它已保持的所有资源,待以后需要时再重新申请; (3)摈弃“环路等待”条件,就是将所有资源按类型排序标号,所有进程对资源的请求必须严格按序号递增的次序提出。
21.在银行家算法的例子中,如果P0发出的请求向量由Request0(0,2,0)改为Request0(0,1,0),问系统可否将资源分配给它?
Process Allocation A B C P0 P1 0, 2, 0 3, 0, 2 Need A B C 7, 3, 3 0, 2, 0 Available A B C 2, 2, 0 P2 P3 P4 3, 0, 2 2, 1, 1 0, 0, 2 Work A B C 2, 2, 0 5, 2, 2 7, 3, 3 7, 5, 3 10, 5, 5 Need A B C 0, 2, 0 0, 1, 1 7, 3, 3 6, 0, 0 4, 3, 1 6, 0, 0 0, 1, 1 4, 3, 1 Finish 进程/资源情况 P1 P3 P0 P2 P4 Allocation Work+Allocation A B C 3, 0, 2 2, 1, 1 0, 2, 0 3, 0, 2 0, 0, 2 A B C 5, 2, 2 7, 3, 3 7, 5, 3 10, 5, 5 10, 5, 7 Ture Ture Ture Ture Ture 可以.
首先,Request0(0,1,0)<=Need0(7,4,3), Request0(0,1,0)<=Available(2,3,0);
分配后可修改得一资源数据表(表略),进行安全性检查,可以找到一个安全序列{P1,P3,P0,P2,P4}, 因此,系统是安全的,可以立即将资源分配给P0.
31. 在银行家算法中,若出现下述资源分配情况,试问:
Process P0 P1 P2 P3 Allocation 0032 1000 1354 0332 0014 Need 0012 1750 2356 0652 0656 Available 1622
P4 (1) 该状态是否安全?
(2) 若进程P2提出请求Request(1, 2, 2, 2)后,系统能否将资源分配给它? 解: (1)
进程/资源情况 P0 P3 P4 P1 P2 Work A B C D 1, 6, 2, 2 1, 6, 5, 4 1, 9, 8, 6 1, 9, 9, 10 2, 9, 9, 10 Need A B C D 0, 0, 1, 2 0, 6, 5, 2 0, 6, 5, 6 1, 7, 5, 0 2, 3, 5, 6 Allocation A B C D 0, 0, 3, 2 0, 3, 3, 2 0, 0, 1, 4 1, 0, 0, 0 1, 3, 5, 4 Work+Allocation A B C D 1, 6, 5, 4 1, 9, 8, 6 1, 9, 9, 10 2, 9, 9, 10 3, 12, 14, 14 Finish Ture Ture Ture Ture Ture 据安全性检查,可以找到一个安全序列{P0, P3, P4, P1, P2},因此该状态是安全的。
(2)P2发出请求向量Request(1,2,2,2),系统进行如下检查 A.Request2(1,2,2,2)<=Need2(2,3,5,6) B.Request2(1,2,2,2)<=Available(1,6,2,2);
C.系统暂时先假定可以为P2分配资源,修改有关数据,如下图所示:
Process Allocation Need Available
A B C D P0 P1 P2 P3 P4 0, 0, 3, 2 1, 0, 0, 0 2, 5, 7, 6 0, 3, 3, 2 0, 0, 1, 4 A B C D 0, 0, 1, 2 1, 7, 5, 0 1, 1, 3, 4 0, 6, 5, 2 0, 6, 5, 6 A B C D 0, 4, 0, 0 D.进行安全性检查,可用资源(0,4,0,0)已经不能满足任何一个进程需要,故系统进入不安全状态,因此,系统不能将资源分配给P2
例:有三类资源A(17)、B(5)、C(20)。有5个进程P1—P5。T0时刻系统状态如下:
P1 P2 P3 P4 P5 问
(2)、T0时刻,P2: Request(0,3,4),能否分配,为什么? (3)、在(2)的基础上P4:Request(2,0,1),能否分配,为什么?
最大需求M 5 5 9 5 3 6 4 0 11 4 2 5 4 2 4 已分配A 2 1 2 4 0 2 4 0 5 2 0 4 3 1 4 (4)、在(3)的基础上P1:Request(0,2,0),能否分配,为什么? 解:
(2) P2: Request(0,3,4)< Need2(1,3,4) Request(0,3,4)> Available(2,3,3),不能分配 (3)Request4(2,0,1) < Need4(2,2,1) Request4(2,0,1)> Available(2,3,3) 假设分配,则
P1 P2 P3 P4 P5 进行安全性检查
进程 P4 P5 P3 P2 P1 work 0 3 2 4 3 7 7 4 11 11 4 16 15 4 18 need 0 2 0 1 1 0 0 0 6 1 3 4 3 4 7 allocation 2 0 4 3 1 4 4 0 5 4 0 2 2 1 2 Work+alloc 4 3 7 7 4 11 11 4 16 15 4 18 17 5 20 finish true true true true true 最大需求(M) 5 5 9 5 3 6 4 0 11 4 2 5 4 2 4 已分配(A) 2 1 2 4 0 2 4 0 5 4 0 5 3 1 4 还需要 3 4 7 1 3 4 0 0 6 0 2 0 1 1 0 由上表可知存在安全序列P4,P5,P3,P2,P1。因此系统是安全的可以将P4所申
请的资源进行分配。
(4)在(3)的基础上,若进程P1请求资源(0,2,0),按银行家算法进行检查: P1请求资源(0,2,0)≤ P1资源需求量(3,4,7) P1请求资源(0,2,0)≤剩余资源数(0,3,2)
试分配并修改相应的数据结构,由此形成的资源分配情况如表所示。 P1请求资源后的资源分配表
Allocation 进程 A P1 P2 P3 P4 P5 2 4 4 4 3 B 3 0 0 0 1 C 2 2 5 5 4 A 3 1 0 0 1 B 2 3 0 2 1 C 7 4 6 0 0 A 0 B 1 C 2 Need Available 再利用安全性算法检查系统是否安全,可用资源Available(0,1,2)已不能满足任何进程的资源需求,故系统进入不安全状态,此时系统不能将资源分配给P1。