问答题
用P操作、V操作解决读者/写者问题的正确程序如下:
Semaphore:S,Sr;
int rc:
S=1;Sr=1;rc=0;
Reader() {
P(Sr);
rc=rc+1;
if(rc==1) then P(S);
V(Sr);
read_file();
P(Sr);
rc=rc-1;
if(rc==0) then V(S);
V(Sr);
}
Writer() {
P(S);
write_file();
V(S);
}
请回答:
问答题
信号量Sr的作用;
【正确答案】
【答案解析】Sr用于读者计数rc的互斥信号量;
问答题
程序中什么语句用于读、写互斥,写、写互斥;
【正确答案】
【答案解析】if rc==1 then P(S)中的P(S)用于读/写互斥,写者进程中的P(S)用于写、写互斥,读、写互斥。
问答题
若规定仅允许5个进程同时读,怎样修改程序?
【正确答案】
【答案解析】程序中增加一个信号量S5,初值为5,P(S5)语句加在读者进程P(Sr)之前,V(S5)语句加在读者进程第2个V(Sr)之后。