3 有两个优先级相同的进程P1和P2,各自执行的操作如下,信号量S1和S2初值均为0。试问Pl 、P2 并发执行后,x 、y 、z 的值各为多少?
P1: P2:
Begin begin
Y:=1; x:=1;
Y:=y+3; x:=x+5;
V(S1); P(S1);
Z:=Y+1; X:X+Y;
P(s2); V(S2);
Y:=z+y; z:=z+x;
End end
答:现对进程语句进行编号,以方便描述.
P1 : P2 :
begin begin
y : = 1 ;① x :=1 ; ⑤
y :=y+3 ;② x :x+5 ; ⑥
V(S1); P(S1);
Z:Y+1 ;③ x :X+Y ;⑦
P(s2); V(S2);
Y:=z+y; ④ z:=Z+X;⑧
End end
① 、② 、⑤ 和⑥ 是不相交语句,可以任何次序交错执行,而结果是唯一的。接着无论系统如何调度进程并发执行,当执行到语句⑦ 时,可以得到x = 10 , y = 4 。按Bernstein 条件,语句③ 的执行结果不受语句⑦ 的影响,故语句③ 执行后得到z = 5 。最后,语句④ 和⑧ 并发执行,这时得到了两种结果为:
语句④ 先执行:x =10 , y =9 , z= 150
语句⑧ 先执行:x =10 , y =19 , z =15
此外,还有第三种情况,语句③ 被推迟,直至语句⑧ 后再执行,于是依次执行以下三个语句:
7 :二z + X :
z : = y + 1 ;
y : =Z十y ;
这时z 的值只可能是y +1=5 ,故y =Z+Y=5 + 4=9,而x = 10 。
第三种情况为:x = 10 ,Y=9 , Z = 5 。
请给更详细的解释吧。。 第3种解答7 :二z + X : 怎么来的。。。 还有 PV操作在这么好像没什么用啊。。。
操作系统pv同步题。有一阅览室,读者进入时必须先在一张登记表上登记...
semaphore seats=E0, mutex=A;cobegin procedureEnter { while(TRUE){ p(seats);p(mutex);填写登记表;进入阅览室阅读;v(mutex);} } procedureLeave { while(TRUE){ p(mutex);消掉登记;离开阅览室;v(mutex);v(seats);} } Coend ...
操作系统PV原语问题
临界区一次只能有一个进程访问,所以结果只能是0或者1,而此时的信号量为负,说明有进程处于等待状态,有进程正在访问,所以结果是1.
假设系统采用PV操作实现进程同步与互斥。若n个进程共享两台打印机,那...
【答案】:D 本题考查操作系统PV操作方面的基本知识。系统采用PV操作实现进程同步与互斥,若有n个进程共享两台打印机,那么信号量S初值应为2。当第1个进程执行P(S)操作时,信号量S的值减去1后等于1;当第2个进程执行P(S)操作时,信号量S的值减去1后等于0;当第3个进程执行P(S)操作时,信号量...
PV操作经典问题
PV(wait\/singal)在考操作系统的时候经常被问到,这篇小文就整理一下几个常见的PV问题。假定在生产者和消费者之间的公用缓冲池中,具有n个缓冲区,这时可利用互斥信号量mutex实现诸进程对缓冲池的互斥使用。利用信号量empty和full分别表示缓冲池中空缓冲区和满缓冲区的数量。又假定这些生产者和消费者相互...
这道操作系统的PV操作题怎么做?求大神
mutrix m=0,n=0;\/\/定义两个二元信号量(这里是阻塞信号量)A:{ x=1; V(m); \/\/释放m P(n); \/\/等待B执行 print(x);}B:{ P(m); \/\/等待A执行 x=x+1; V(n); \/\/释放n}
操作系统PV操作问题
假设有一个成品仓库,总共能存放8台成品,生产者进程生产产品放入仓库,消费者进程从仓库中取出成品消费.为了防止积压,仓库满的时候就停止生产.由于仓库搬运设备只有一套,故成品的存入和取出只能分别执行,使用PV操作来实现该方案. 这就是题目,请帮忙解答,谢谢!! 展开 我来答 分享 微信扫一扫 新浪微博 QQ空间...
操作系统 信号量 PV操作
访问这个停车器,不等于获得停车器的进入许可证。在实际代码中,访问时一定需要的,访问本身不是互斥的,“访问并获得进入许可证”这是一个原子操作,是一个整体。比如信号量s = 1, 此时别人来访问s的值,是1,表示别人已经获得,所以,他无法获得。read s的值是可以并发的,但是修改s的值,是一个...
关于操作系统的pv问题
S1表示桔子,S2表示苹果。爸爸往盘里放桔子:V(S1)妈妈往盘里放苹果:V(S2)女儿吃桔子:P(S1)弟弟吃苹果:P(S2)
计算机操作系统关于PV操作的一道题
\/\/再设一用于标志上一次操作F的是否为A的标示位(也是临界区)wasA:当wasA为1时,表示上次操作F的是A;当wasA为0时,表示上次操作F的不是A,而是B或者C。其信号量名为lastOper,初始值为0。\/\/……其他与本算法无重要关系的代码……\/\/进程A的算法描述 void processA(usrStruct &F){ \/\/...
操作系统PV操作题:一个快餐店有4类职员
你要将这四类职员看成四类进程P1,P2,P3,P4,然后四类进程对两个变量进行操作,s1是点菜数量,s2是每道菜的状态,其值0表示菜做好,1表示菜做好了 具体解答:定义三个信号量:s1——点菜数量,初始值为0;s2——菜的状态,初始值为0;s3——包装状态,初始值为0;领班进程:while(true){ 顾...