1.高级调度与低级调度的主要任务是什么?为什么要引入中级调度?
高级调度的主要任务是根据某种算法,把外存上处于后备队列中的那些作业调入内存。
低级调度是保存处理机的现场信息,按某种算法先取进程,再把处理器分配给进程。
引入中级调度的主要目的是为了提高内存利用率和系统吞吐量。使那些暂时不能运行的进程不再占用内存资源,将他们调至外存等待,把进程状态改为就绪驻外存状态或挂起状态。
2.在选择调度方式和调度算法时,应遵循的准则是什么?
①面向用户的准则:周转时间短、响应时间快、截止时间的保证、优先权准则。
②面向系统的准则:系统吞吐量高,处理机利用率好、各类资源的平衡利用。
3.试比较FCFS和SJF两种进程调度算法。
相同点:两种调度算法都可以用于作业的调度和进程的调度。
不同点:FCFS调度算法每次都从后备队列中选择一个或多个最先进入该队列的作业,将它们调入内存、分配资源、创建进程、插入到就绪队列。该算法有利于长作业进程,不利于短作业进程。
SJF算法每次调度都从后备队列中选择一个或若干个估计运行时间最短的作业,调入内存中运行。该算法有利于短作业进程,不利于长作业进程。
4.何谓死锁?产生死锁的原因和必要条件是什么?
死锁是指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,他们都将无法再向前推进。
产生死锁的原因为竞争资源和进程间推进顺序非法。其必要条件是:互斥条件、请求和保持条件、不可抢占条件、循环等待条件。
5.在解决死锁问题的几个方法中,哪种方法最易于实现?哪种方法使资源利用率最高?
解决死锁的四种方法即预防、避免、检测和解除。
预防死锁最容易实现;避免死锁使资源的利用率最高。
6.在银行家算法的例子中,如果P0发出的请求向量由Request(0,2,0)改为Request(0,1,0),问系统可否将资源分配给它?
能。P0发出请求向量Request0(0,1,0),按银行家算法进行检查:
①Request0(0,1,0)≤Need0(7,4,3)
②Request0(0,1,0)≤Available(2,3,0)
③系统暂时先假定可为P0分配资源,并修改有关数据
Available0=Available0(2,3,0)-Request0(0,1,0)=(2,2,0)
Allocation0=Allocation0(0,1,0)+Request0(0,1,0)=(0,2,0)
Need0=Need0(7,4,3)-Request(0,1,0)=(7,3,3)
④利用安全性算法检查此时系统是否安全
进程 | Work A B C | Need A B C | Allocation A B C | Work+Allocation A B C | Finish |
---|---|---|---|---|---|
P1 | 2 2 0 | 0 2 0 | 3 0 2 | 5 2 2 | true |
P3 | 5 2 2 | 0 1 1 | 2 1 1 | 7 3 3 | true |
P0 | 7 3 3 | 7 3 3 | 0 2 0 | 7 5 3 | true |
P2 | 7 5 3 | 6 0 0 | 3 0 2 | 10 5 5 | true |
P4 | 10 5 5 | 0 0 2 | 4 3 1 | 10 5 7 | true |
又安全性检查得知,可以找到一个安全序列{P1,P3,P0,P2,P4},所以系统是安全的,系统可以立即将P1所申请的资源(0,1,0)分配给它。
7.在银行家算法中,若出现下述资源分配情况,试问:(该题网上部分答案有错)
Process | Allocation | Need | Available |
---|---|---|---|
P0 | 0032 | 0012 | 1622 |
P1 | 1000 | 1750 | |
P2 | 1354 | 2356 | |
P3 | 0332 | 0652 | |
P4 | 0014 | 0656 |
(1)该状态是否安全?
(2)若进程P2提出请求Request(1,2,2)后,系统能否将资源分配给它?
(1)该状态时安全的,因为存在一个安全序列{P0,P3,P4,P1,P2},下表为该时刻的安全序列表。
Process | Work | Need | Allocation | Work+Allocation | Finish |
---|---|---|---|---|---|
P0 | 1 6 2 2 | 0 0 1 2 | 0 0 3 2 | 1 6 5 4 | true |
P3 | 1 6 5 4 | 0 6 5 2 | 0 3 3 2 | 1 9 8 6 | true |
P4 | 1 9 8 6 | 0 6 5 6 | 0 0 1 4 | 1 9 9 10 | true |
P1 | 1 9 9 10 | 1 7 5 0 | 1 0 0 0 | 2 9 9 10 | true |
P2 | 2 9 9 10 | 2 3 5 6 | 1 3 5 4 | 3 12 14 14 | true |
(2)若进程P2提出请求Request(1,2,2,2)后,系统不能将资源分配给它,因为如果分配给进程P2,系统还剩的资源情况为(0,4,0,0),此时系统中的资源将无法满足任何一个进程的资源请求,从而导致系统进入不安全状态,容易引起死锁的发生。