手机版

操作系统 课后答案(6)

发布时间:2021-06-06   来源:未知    
字号:

P(fork[(i+1)mod5]); V(mutex); 吃饭

V(fork[i]);

V(fork[(i+1)mod5]); } while(1);

3-17.

(1)公平竞争(无写者时,读者仍遵循多个读者可以同时读) rmutex互斥共享readcount; rwmutex读写互斥,写写互斥; 读写进程在z上排队。

int rmutex=1,rwmutex=1,readcount=0;

reader:

begin

p(z); //读写进程在z上排队。 p(rmutex);

if(readcount=0) then p(rwmutex); end if

++readcount; v(rmutex);

v(z); //无写者时,多个读者可以同时读. read data; p(rmutex);

--readcount;

if(readcount=0 then v(rwmutex);

end if;

v(rmutex); … end

writer:

begin

p(z); //读写进程在z上排队。 p(rwmutex); write data;

v(rwmutex); v(z); … end

(2)写者优先

int readcount,writecount;

semaphore rmutex=1,wmutex=1,rwmutex=1,z=1,x=1;

reader:

//当来了一个写进程时,通过p(x)禁止其后读进程读,直到写进程写完为止。

while(1){

p(z); //其他读进程在z上排队

p(x); //一个读进程与一个写进程在x上竞争 p(rmutex); //读进程互斥访问readcount ++readcount;

if(readcount==1) p(rwmutex); v(rmutex); v(x); v(z); read data; //临界区

p(rmutex); --readcount;

if(readcount==0) v(rwmutex); v(rmutex);

}

Writer:

while(1){

p(wmutex); //写进程互斥访问writecount ++writecount;

if(writecount==1) p(x); //一个写进程与一个读进程在x上竞争

操作系统 课后答案(6).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
×
二维码
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)