1、利用软件方法解决进程互斥问题假设有两个进程Pi和Pj,它们共享一个临界资源R,请使用软件方法使进程Pi和Pj能互斥地访问资源R。算法1:设置整形变量turn,用于指示被允许进入临界区的进程的编号,即若turn=0,表示允许进程Pi进入临界区。注意:该算法强制两个进程轮流进入临界区,不考虑实际需要。很容易造成资源的不充分利用。对Pi进程的描述如下:repeatwhile turn≠i do no-opcritical sectionturn:=jremaindersectionuntil false算法2:在每一个进程访问临界资源之前,先去查看一下临界资源是否正被访问,若正被访问,该进程等
2、待;否则,进入自己的临界区。设置数组flag,使其中每个元素的初值为false——表示所有进程都未进入临界区,而当其中的第i个元素值非false时,即若flag[i]=ture——表示进程Pi正在临界区内执行。注意:该算法解决了有空让进的原则,但当Pi和Pj的访问标志flag都为false时,如果Pi和Pj几乎同时都要求进入临界区,因而都发现对方的标志为false,于是,两进程都 先后进入临界区,又违背了忙则等待的原则。算法描述如下:Var flag:arry[0,1,,…n] of Boolean;RepeatWhileflag[j] do no-opFlag[i]:=true;Cr