他们不能正确运行因为题中的进程P和P之间有一个共享变量X由于进程的并发执行可能会产生与时间有关的错误比如进程P先于P运行程序执行完成后Z的值是u的值为但若进程P执行到赋值语句X=后进程调度P运行此时X的值又被重新赋值为待进程P运行结束后进程P运行当两个进程都结束运行时Z的值u的值若要使P和P能正确执行必须设置一互斥信号量以便对P和P中的临界区互斥使用改正后的程序如下
The PV code Using Pascal
parbegin var x:integer; mutex:semaphore; process P process P var yz:integer; var tu:integer; begin begin p(mutex); p(mutex); x:=; x:=; y:=; t:=; if x≥ then y:=y+; if x≤ then t:=t+; v(mutex); v(mutex); z:=y; u:=t; end end parend 返回《操作系统之PV金典》 [] [] |