问答题 [说明]
操作系统中,死锁(Deadlock)是指多个进程在运行的过程中因争夺资源而造成的一种僵局。当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进。
面对死锁问题有两个解决方案:预防死锁和避免死锁。
预防死锁是一种较简单和直观的事先预防方法。该方法是通过设置某些限制条件,去破坏产生死锁的四个必要条件中的一个或多个,以此来预防死锁的发生。预防死锁由于较易实现,已被广泛应用,但由于所施加的限制条件往往太严格,可能会导致系统资源利用率和系统吞吐量的降低。
避免死锁同样是属于事先预防的策略,但它无须事先采取各种限制措施去破坏产生死锁的四个必要条件,而是在资源分配过程中,用某种方法去防止系统进入不安全状态,从而避免发生死锁。
银行家算法(Banker's algorithm)是Dijkstra于1965年提出的一个经典的避免死锁的算法。形象地描述银行发放贷款不能使有限可用资金匮乏而导致整个银行无法运转的思路,也就是说每次请求贷款,银行要考虑他能否凭着贷款完成项目,并还清贷款使银行运转正常。令Request(i)是进程P(i)请求向量,如果Request(i)[j]=k则进程P(i)希望请求j类资源k个。具体算法步骤如下:
(1)如果Request(i)>Need(i)则出错(请求量超过申报的最大量),否则转到(2);
(2)如果Request(i)>Available则P(i)等待,否则转(3);
(3)系统对P(i)所请求的资源实施试探分配,并更改数据结构中的数值;
(4) Available = Available - Request(i):
Allocation(i) = Allocation(i) + Request(i);
Need(i) = Need(i) - Request(i);
(5)执行安全性算法,如果是安全的,则承认试分配,否则废除试分配,让进程P(i)继续等待。
所谓系统是安全的,是指系统中的所有进程能够按照某一种次序分配资源,并且依次运行完成,这种进程序P1, P2, …, Pn就是安全序列。如果存在这样一个安全序列,则系统是安全的;如果系统不存在这样一个安全序列,则系统是不安全的。

问答题 简述产生死锁的四个必要条件。
【正确答案】死锁的发生必须具备四个必要条件:
· 互斥条件:进程对所分配到的资源进行排他性使用,即在一段时间内某资源只有一个进程占用;
· 请求和保持条件:进程已经保持了至少一个资源但又提出了新的资源请求,若得不到满足则阻塞该进程,但其保持已获得的资源不释放;
· 不剥夺条件:进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完时由自己释放;
· 环路等待条件:在发生死锁时,必然存在一个进程-资源的环形链,即进程集合{P1,P2,...,Pn}中的P1等待P2占用的资源,P2等待P3占用的资源,...,Pn等待P0占用的资源。
【答案解析】
问答题 设系统中有三种类型的资源(A, B, C)和五个进程(P0, P1, P2, P3, P4),某时刻的资源分配状态如表所示。给出该时刻存在的一个安全序列。
Allocation Max Available
A B C A B C
P0 0 1 0 7 5 3
P1 3 0 2 3 2 2 A B C
P2 3 0 2 9 0 2 2 3 0
p3 2 1 1 2 2 2
P4 0 0 2 4 3 3
【正确答案】{P1,P3,P0,P4,P2}
【答案解析】
问答题 若系统中有同类资源16个,有4个进程共享该资源。已知P1、P2、P3、P4所需总资源分别是8、5、9、6。各进程请求资源次序为(序号,进程,申请量):(1, P1, 6)、(2, P2, 4)、(3, P3, 5)、(4, P4,1)、(5, P1, 1)、(6, P2, 1)。若用银行家算法为它们分配资源,分析每一步请求以后,各个进程还需的资源数以及系统所剩资源数,并指出系统是否安全。注,当某序号的申请导致系统不安全时,跳过该请求(拒绝该请求)继续往下判断,相当于将该进程阻塞。
【正确答案】①(1,P1,6)余资源10。此时P1还需2,P2还需5,P3还需9,P4还需6。系统存在安全序列:{P1,P2,P3,P4},故系统安全。②(2,P2,4)余资源6。此时P1还需2,P2还需1,P3还需9,P4还需6。系统存在安全序列:{P1,P2,P3,P4},故系统安全。③(3,P3, 5)余资源1。此时P1还需2,P2还需1,P3还需4,P4还需6。系统存在安全序列:{P2,P1, P3, P4},故系统安全。④(4, P4, 1)余资源0。此时P1还需2,P2还需1,P3还需4,P4还需5。系统不存住安全序列,故系统不安全。请求(4, P4, 1)是不安全的,排除该请求,继续往后判断。⑤(5, P1, 1)余资源0。此时P1还需1,P2还需1,P3还需4,P4还需6。系统不存在安全序列,故系统不安全。请求(5, P1, 1)是不安全的,排除该请求,继续往后判断。⑥(6, P2, 1)余资源0。此时P1还需2,P2还需0,P3还需4,P4还需6。P2进程资源己得到完全满足,P2完成后,资源释放。系统存在安全序列:{P2,P1, P3, P4},故系统安全。至此,6个进程均进行了是否分配资源判断。
【答案解析】