e=1,1,1,1;writecount:integer:=0;reader:beginrepeatwait(s);wait(rmutex);ifreadcount=0thenwait(wmutex);readcount:readcount+1;signal(rmutex);signal(s);performreadoperation;wait(rmutex);readcount:=readcount-1;ifreadcount=0thensignal(wmutex);signal(rmutex);untilfalse;endwriter:beginrepeatwait(mutex);ifwritecount=0thenwait(s);writecount:writecount+1;signal(mutex);wait(wmutex);performwriteoperation;signal(wmutex);wait(mutex);writecount:=writecount-1;ifwritecount=0thensignal(s);signal(mutex);untilfalse;end4.分析以下进程运行环境中出现的同步和互斥现象,列出相应的变量和参数。理发店理有一位理发师、一把理发椅和n把供等候理发的顾客坐的椅子。如果没有顾客,理发师便在理发椅上睡觉。一个顾客到来时,它必须叫醒理发师。如果理发师正在理发时又有顾客来到,则如果有空椅子可坐,就坐下来等待,否则就离开。 理发师是顾客争用的资源,用信号量barbers表示,初值为0;除此以外,顾客还要争用n张椅子,信号量customers表示等候理发的顾客数,初值为0;最后设置信号量mutex用于这两个活动对资源barbers、customers的互斥,初值为1。另外还需使用一个变量waiter,用于记录等候的顾客的数量。