版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、进程同步练习题1第二类读者写者问题,信号量解决方法2复印室里有一个操作员为顾客复印资料,有5 把椅子供顾客休息等待复印。如果没有顾客,则操作员休息。当顾客来到复印室时,如果有空椅子则坐下来,并唤醒复印操作员;如 果没有空椅子则必须离开复印室。3 如果有三个进程R、W1 W2共享一个缓冲器B,而B中每次只能存放一个数。当缓冲器中 无数时,进程R可以将从输入设备上读入的数存放到缓冲器中。 若存放到缓冲器中的是奇数, 则允许进程 W1将其取出打印;若存放到缓冲器中的是偶数,则允许进程 W2将其取出打印。同时规定:进程R必须等缓冲区中的数被取出打印后才能再存放一个数;进程W1或 W2对每次存入缓冲器的
2、数只能打印一次; W1和W2都不能从空缓冲中取数。写出这三个并发进程能 正确工作的程序。4现有四个进程R1、R2 W1 W2它们共享可以存放一个数的缓冲器 B。进程R1每次把来 自键盘的一个数存入缓冲器 B中,供进程W1打印输出;进程R2每次从磁盘上读一个数存放 到缓冲器B中,供进程 W2打印输出。为防止数据的丢失和重复打印,问怎样用信号量操作 来协调这四个进程的并发执行。5 有一个仓库,可以存放 A和B两种产品,但要求:(1) 每次只能存入一种产品(A或B);(2) -Nv A产品数量一B产品数量v M其中,N和M是正整数。试用同步算法描述产品A与产品B的入库过程。6 设有两个生产者进程 A
3、、B和一个销售者进程C,他们共享一个无限大的仓库,生产者每 次循环生产一个产品,然后入库供销售;销售者每次循环从仓库中取出一个产品进行销售。如果不允许同时入库,也不允许边入库边出库;而且要求生产和消费A产品和B产品的件数都满足以下关系:-nA的件数一B的件数w m其中n、m是正整数。1. 第二类读者写者问题,信号量解决方法答:为了使写者优先,可在原来的读优先算法的基础上增加一个互斥信号量s,初值为1使得当至少有一个写者准备访问共享对象时,它可以使后续的读者进程等待完成;整型变量 writecount ,初值为 0,用来对写者进行计数;互斥信号量 mutex,初值为1,用来实现多个读者对写者wr
4、itecou nt进行互斥访问。Process reader() while(1)wait(s);wait(rmutex);if(readcount=0)wait(wmutex);readcount+;signal(rmutex);signal(s);perform read operation;wait(rmutex);readcount-;if(readcount=0)signal(wmutex);signal(rmutex);Process writer() while(1)wait(mutex);if(writecount=0)wait(s);writecount+;signal(mu
5、tex);wait(wmutex);perform write operation;signal(wmutex);wait(mutex); writecount-;if(writecount=0)signal(s);signal(mutex);Main( )cobegin reader();writer();2. 复印室里有一个操作员为顾客复印资料,有 5 把椅子供顾客休息等待复印。如果没有顾 客,则操作员休息。当顾客来到复印室时,如果有空椅子则坐下来,并唤醒复印操作员;如 果没有空椅子则必须离开复印室。答:/亠口 曰信号量:customers 表示正在等待复印的顾客数量(不包括正在复印的顾客
6、)operator 记录正在等候顾客的操作员数,只有 1 和 0mutex 用于对 waiting 的访问 ;变量:waiting 表示等待的顾客数量。它实际上是 customers 的一个副本。之所以使用 waiting 是因为无法读取 信号量的当前值。semaphore customers=0,operator=0,mutex=1;waiting=0 ;process operator()现有四个进程R1、R2 W1 W?它们共享可以存放一个数的缓冲器B。进程R1每次把来自键盘的一个数存入缓冲器B中,供进程 W1打印输出;进程R2每次从磁盘上读一个数存放到缓冲器 B中,供进程 W2打印输出
7、。为防止数据的丢失和重复打印,问怎 样用信号量操作来协调这四个进程的并发执行。答:S:互斥访问缓冲器S1:是否可以供进程 W1打印输出S2:是否可以供进程 W2打印输出semaphore S=1,S1=S2=0; buffer B;process R1 () int x;while(1)接收来自键盘的数x=接收的数; wait(S);B=x;signal(S1);process R2() int y;while(1)从磁盘上读一个数y=接收的数;wait(S);B=y;signal(S2);process W1() int k;while(1) wait(Sl); k=B; signal(S)
8、; 打印 k 中数 ;process W2() int j;while(1)wait(S2);j=B; signal(S); 打印 j 中数 ;main()cobeginR1();R2();W1();W2();5、有一个仓库,可以存放 A和B两种产品,但要求:(1)每次只能存入一种产品(A或B);(2) -NVA产品数量一B产品数量v M其中,N和M是正整数。试用同步算法描述产品 A与 产品 B 的入库过程。分析:A产品的数量不能比B产品的数量少N个以上,A产品的数量不能比B产品的数量多M个以上.设置两个信号量来控制 A B产品的存放数量,sa表示当前允许 A产品比B产品多入库的数量,即在 当
9、前库存量和B产品不入库的情况下,还可以允许sa个A产品入库;sb表示当前允许 B产品比A产品多入库的数量,即在当前库存量和 A产品不入库的情况下,还可以 允许 sb 个 B 产品入库。初始时,sa为M 1, sb为N 1。当往库中存放入一个 A产品时,则允许存入 B产品的数量也增加 1;当往库中存放入一个 B产品时,则允许存入 A产品的数量也增加1。semaphore mutex=1 , sa=M-1 , sb=N-1; process puta() while(1) 取一个产品;wait(sa);wait(mutex);将产品入库;signal(mutex); signal(sb);proc
10、ess putb() while(1) 取一个产品;wait(sb);wait(mutex);将产品入库;signal(mutex);signal(sa);main() cobeginputa();putb();6设有两个生产者进程 A、B和一个销售者进程C,他们共享一个无限大的仓库,生产者每 次循环生产一个产品,然后入库供销售;销售者每次循环从仓库中取出一个产品进行销售。 如果不允许同时入库,也不允许边入库边出库;而且要求生产和消费A产品和B产品的件数都满足以下关系:-nA的件数一B的件数w m其中n、m是正整数。分析:生产者 A B和消费者之间不能同时将产品入库和出库,故仓库是一个临界资源
11、。生产的A B产品必须满足:-nWA的件数一B的件数w m如练习5中,同样的方法管理,分别使用了信号量SAB和SBA仓库的管理只要求出入库互斥, 由于仓库无限大入库只需操作互斥就可以完成, 出库要考虑有无产品,SA对应于仓库中的 A产品量,SB对应于仓库中的 B产品量;销售要满足:-nWA的件数一B的件数w m用differenee 表示A的件数一B的件数,即difference= A的件数一B的件数;difference=-n 的时候,不能取产品 B,只能取 A difference=m 的时候,不能取 产品A,只能取B; -ndifferencem ,即可以取产品 A也可以取产品 B;答:
12、为了互斥地入库和出库,需为仓库设置一初值为1的互斥信号量 mutex;为了使生产的产品件数满足-nWA的件数一B的件数w m须设置两个同步的信号量,其中SAB表示当前允许 A生产的产品数量,其初值为m, SBA表示当前允许 B生产的产品数量,其初值为n;另外,还需设置一个整数differenee 表示所销售的A B产品数量之差,而为了同步生产者和销售者并使销售的A、B产品的件数- nWA的件数一B的件数wm还需要设置三个资源信号量,其中S对应于仓库中的总的产品量,SA对应于仓库中的 A产品量,SB对应于仓库中的 B产品量,它们的初值都为0.Semaphore SAB=m,SBA=n,S=0,S
13、A=0,SB=0,mutex=1;process A( ) while(1)生产产品,-nWA的件数一B的件数w m方法同第 4题 wait(SAB);Produce a product A;signal(SBA);/ 入库操作,满足出入库操作互斥即可 wait(mutex);add the product A to the storehouse; signal(mutex);signal(SA); /入库产品A一件,所以给SA增值signal(S); /入库产品一件,所以给 S增值,S是仓库中全部产品的数量process B( ) while(1)/生产产品,-nWA的件数一B的件数w m方
14、法同第 4题 wait(SBA);Produce a product B;signal(SAB);/ 入库操作,满足出入库操作互斥即可wait(mutex);add the product A to the storehouse;signal(mutex);signal(SB); /入库产品A一件,所以给SA增值signal(S); /入库产品一件,所以给S增值,S是仓库中全部产品的数量process C( ) while(1) wait(S);/ 首先检查有无产品,无产品阻塞,有产品,下面操作将会取走一件产品,所以if(difference=-n)wait(SA); / difference=m) wait(SB); /difference=m时只能取B产品一件,无 B产品则需阻塞/ 出库操作,满足出入库操作互斥wait(mutex);take a product B from storehouse;signal(mutex);difference-; /取 B 产品一件,difference-else / -n differe ncem,即可以取产品A也可以取产品B,随意取一件产品出来,之后再根据取得产品是 A 还是 B 进行处理/ 出库操作,满足出入库操作互斥wait(mutex);take a product A 或 B from storehouse;signal(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2012年高考语文试卷(安徽)(空白卷)
- 《离子浓度大小比较》课件
- 挑战与突破自我
- 探索物理定律的奥秘
- 《痛苦的职场人》课件
- 工作调研报告(合集三篇)
- 2023年项目部安全管理人员安全培训考试题附参考答案(达标题)
- 2023年项目部安全管理人员安全培训考试题(1套)
- 母亲节新媒体策划
- 初中语文教师教学工作总结11篇
- CNAS-CL02-A001:2023 医学实验室质量和能力认可准则的应用要求
- 海康威视枪机摄像机检测报告.文档
- 部编小语一下三单元(《小公鸡和小鸭子》《树和喜鹊》《怎么都快乐》)大单元学习任务群教学设计
- 体检中心组织架构
- 森林抚育投标方案
- 中小学教育中课程资源的开发与利用
- 大班科学教案:我和风儿做游戏教案及反思
- 园艺治疗概念、内涵与理论依据
- 后续服务承诺及保证措施-后续服务
- 提高无创呼吸机患者的依从性
- 小儿急性颅内压增高的护理课件
评论
0/150
提交评论