第二题,希望能提供下这道题的解决思路
三种可能嘛:0,1,2
第一种:
未发生访问冲突,即在P1对X完成加1操作后P2对才开始对X进行减1操作,或者在p2对X完成减1操作后P1才开始对X进行加一操作,这样两种
情况下X的值都为0.
第二种:
在P1完成加1操作(即执行完store x,R1)之前,P2执行了LoadR2 ,x,并且p1操作在P2之前完成,则在P2操作完成时X值为0。
第三种:
在P2执行store x,R2之前,P1执行了LoadR1 ,x,并且p2操作在P1之前完成,则在P1操作完成时X值为2。
总之:发生访问冲突的情况下,P1后完成结果就是2,P2后完成结果就是0.不发生冲突结果就为0.
每个进程3条指令,你排列一下可能的先后顺序不就知道了吗
课本上应该有,不看课本课件就来伸手,很难进步的
给你举个例子吧:
load 1
inc 1
store 1
load 2
dec 2
store 2
x最终结果为1
load 1
load 2
inc 1
dec 2
store 1
store 2
两个进程都读取了x=1的值,并分别更新为x=2和x=0,x最终结果与两个store指令的先后顺序有关。在这个顺序下,x=0,两条store倒过来的话x=2.
还有其他情况,不一一列举了