问题 问答题

某系统有输入机和打印机各一台,今有两个进程都要同时使用它们,采用PV操作实现请求使用和归还释放后,还会产生死锁吗若不会,说明理由;若会产生死锁则给出一种防止死锁的方法。

答案

参考答案:

解析:如果PV操作设计不当,仍会产生死锁。假如用S1和S2分别代表输入机和打印机能否被使用的信号量,由于资源是共享的,所以必须互斥使用,因而它们的初始值都为1。如果用如下方法实现请求使用和归还释放: process A1 begin P(S1); 使用输入机; P(S2); 使用打印机; V(S2); V(S1); end; process A2 begin p(S2); 使用打印机; p(s1); 使用输入机; V(S2); V(S1); end; 那么,就会出现A1得到输而A2得到打印机,双方在不释放已有的资源的情况下又去申请新的资源,就会造成死锁。 可以采用为资源编序号的方法,要求按序申请;如下: process A1 begin p(s1); 使用输入机; p(s2); 使用打印机; v(s2); v(s1); end; process A2 begin p(s1); 使用输入机; p(s2); 使用打印机: v(s2); v(s1); end

选择题
单项选择题