请用PV操作解决读者和写者问题.doc

请用PV操作解决读者和写者问题.doc

ID:59319792

大小:36.00 KB

页数:2页

时间:2020-09-05

请用PV操作解决读者和写者问题.doc_第1页
请用PV操作解决读者和写者问题.doc_第2页
资源描述:

《请用PV操作解决读者和写者问题.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、请用PV操作解决读者和写者问题。有两组并发进程:读者和写者,共享一个文件,要求:(1)允许多个读者同时执行读操作(2)在任意写者在完成写操作之前,不允许其他任意的读者和写者工作3写者预工作,但在它之前已有读者在执行读操作,那么,待现有读者完成读操作后在执行写操作,新的读者和写者均被拒绝。Samaphermatex=1/*对文件互斥*/S1=1/*对Readcount互斥*/Readcount=0读者记数器。Reader:Writer:P(S1);P(mutex);Readcount++;Writeafile;V(S1);V(mutex

2、);Readafile;P(S1);Readcount--;If(Readcount==0)V(mutex);V(S1);设由n个缓冲区组成缓冲池,每个缓冲区可以存放一个消息,有两类进程:x个生产者和y个消费者,且只要缓冲池未满,生产者便可以将消息送入缓冲池,而只要缓冲池未空,消费者就可以取走一个消息。各个进程对缓冲池进行互斥访问,用信号量实现协调过程。要求写出使用的信号量、初值及其作用,并写出生产者进程和消费者进程的处理流程(10分)某寺庙共有老和尚和小和尚若干人,庙外有一口井,只能容一人打水,庙内有6只水桶和一口缸,缸内最多能装3

3、0桶水,每只桶每次只能由一人使用,缸每次只能由一人使用。小和尚负责从庙外的井里打水,老和尚使用缸里的水,老和尚取水的单位是桶。请利用信号量和P、V操作描述老和尚和小和尚的活动。semaphoreempty=30;//表示缸中目前还能装多少桶水,初始时能装30桶水semaphorefull=0;//表示缸中有多少桶水,初始时缸中没有水semaphorebuckets=6;//表示有多少只空桶可用,初始时有6只桶可用semaphoremutex_well=1;//用于实现对井的互斥操作semaphoremutex_bigjar=1;//用

4、于实现对缸的互斥操作semaphoremutex_buchet=1;//用于实现对桶的互斥操作,防止多人同时拿同一只桶yongermonk(){while(1){P(empty);P(buckets);P(mutex_bucket);getabucket;V(mutex_bucket);gotothewell;P(mutex_well);getwater;V(mutex_well);gotothetemple;P(mutex_bigjar);purethewaterintothebigjar;V(mutex_bigjar);V(buc

5、kets);V(full);}}oldmonk(){while(1){P(full);P(buckets);P(mutex_bucket);getabucket;V(mutex_bucket);P(mutex_bigjar);getwater;V(mutex_bigjar);V(buckets);V(empty);}}

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。