二.简答题
1.(1)系统资源不足;(2)进程推进顺序不合适。
在早期的系统中,由于系统规模较小,结构简单,以及资源分配大多采用静态分配法,使得操作系统死销问题的严重性未能充分暴露出来。但今天由于多道程序系统,以至于数据库系统的出现,系统中的共享性和并行性的增加,软件系统变得日益庞大和复杂等原因,使得系统出现死锁现象的可能性大大增加。
2.发生死锁的必要条件有四点:互斥条件、不可抢占条件、部分分配条件和循环等待条件。
(1)互斥条件:系统中存在一个资源一次只能被一个进程所使用;
(2)非抢占条件:系统中存在一个资源仅能被占有它的进程所释放,而不能被别的 进程强行抢占;
(3)占有且等待条件:系统中存在一个进程已占有了分给它的资源,但仍然等待其 它资源;
(4)循环等待条件:在系统中存在一个由若干进程形成的环形请求链,其中的每一个进程均占有若干种资源中的某一种,同时每一个进程还要求(链上)下一个进程所占有的资源.
4.Havender提出的第二个策略是有序资源使用法,这是针对循环等待条件的,即系统设计者把系统中所有资源类都分给一个唯一的序号,如输入机=1,打印机=2,穿孔输出机=3,磁带机=4,等等。并且要求每个过程均应严格按递增的次序请求资源。亦即,只要进程提出请求资源,那么以后它只能请求排列在其后面的那些资源,而不能再要求序号低的那些资源。不难看出,由于对资源的请求作出了这种限制,在系统中就不可能形成几个进程对资源的环形请求链,破坏了循环等待条件。
这种方法由于不是采用预先静态分配方法,而是基本上基于动态分配方法,所以资源利 用率较前一方法提高了,特别是小心地安排资源序号,把一些各作业经常用到的、比较 普通的资源安排成低序号,把一些比较贵重或稀少的资源安排成高序号,便可能使最有价值的资源的利用率大为提高。因为高序号的资源往往等到进程真正需要时,才提出请求分配给进程。而低序号的资源,在进程即使暂不需要的情况下,但是进程需要使用高序号资源,所以在进程请求分配高序号资源时,不得不提前同时请求以后需要的低序号资源,从而造成资源空闲等待的浪费现象。
5.P132
6.按序分配是把系统中所有资源排一个顺序,每一个资源给一个确定的编号,规定任何一个进程申请两个以上资源时,总是先申请编号小的资源,再申请编号大的资源。
按序分配可以防止死锁,证明如下:
假设存在一组循环等待的进程记为(P0,P1, ,Pn),其中Pi拥有资源ri,编号为F(ri);根据按序分配原则,有F(r0)<F(r1)< <F(rn),因存在循环等待,所以Pn申请的下一个资源就为P0所占的rn,,若Pn能正常运行,必须依据资源顺序分配原则,即下次申请资源标 号应比其所占有的资源标号大,于是有F(rn)<F(r0),这与前面的不等式有矛盾,故不能存在。
7.在防止死锁的分配策略中,有的只适用于对某些资源的分配,有的则会影响资源的使用效率。例如,剥夺式分配目前只适合于对处理器和主存资源的分配。静态分配策略把资源预先