资源描述:
《经典进程同步互斥问题集》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、GeneratedbyFoxitPDFCreator©FoxitSoftwarehttp://www.foxitsoftware.comForevaluationonly.【例1】有三个进程PA、PB和PC协作解决文件打印问题:PA将文件记录从磁盘读入内存的缓冲区1中,每执行一次读一个记录;PB将缓冲区1中的内容复制到缓冲区2中,每执行一次复制一个记录;PC将缓冲区2中的内容打印出来,每执行一次打印一个记录。缓冲区的大小与记录大小一样。请用信号量来保证文件的正确打印。答:该文件打印过程的同步算法可描述如下:v
2、arempty1,full1,empty2,full2:semaphore:=1,0,1,0;beginparbeginPA:beginrepeat从磁盘读一个记录;wait(empty1);将记录存放到缓冲区1中;signal(full1);untilfalseendPB:beginRepeatwait(full1);从缓冲区1中取出一个记录;signal(empty1);wait(empty2);将记录复制到缓冲区2中;signal(full2);untilfalseendPC:beginrepeatwa
3、it(full2);从缓冲区2中取出一个记录;signal(empty2);将取出的记录打印出来;untilfalseendparendend【例2】进程A1、A2、⋯An1通过m个缓冲区向进程B1、B2、⋯Bn2不断地发送消息。发送和接收工作遵循如下规则:(1)每个发送进程一次发送一个消息,写入一个缓冲区,缓冲区大小与消息长度一样。(2)对于每一个消息,B1、B2、⋯Bn2都需各接收一次,读入自己的数据区内。(3)m个缓冲区都满时,发送进程等待;没有可读的消息时,接收进程等待。试用wait,signal操作
4、描述它们的同步关系。分析:本题是生产者-消费者问题的一个变形。由于每个缓冲区都只写一次,但要读n2次,故我们可将每个缓冲区看成是由n2格组成的。只有当某个缓冲区的n2格都空闲时,才允许写入,1GeneratedbyFoxitPDFCreator©FoxitSoftwarehttp://www.foxitsoftware.comForevaluationonly.而且写一次缓冲区相当于将该缓冲区的n2格全部写一遍。Bj进程从缓冲中取消息时,它只取相应缓冲的第j格。由于每个Bj取消息的速度不同,故需为它们分别设置
5、指针outj,用来指示从哪个缓冲区的第j格中取消息。答:我们将每个缓冲区看成是由n2格组成的,可为本题设置下列信号量:mutex,初值为1,用来实现对缓冲区的互斥访问;empty[i](i=1,…,n2),初值均为m,每个empty[i]对应于缓冲池的第i格中的所有空闲缓冲区;full[i](i=1,…,n2),初值均为0,对应缓冲池第i格中装有消息的缓冲区。另外还需要提供整型变量in用来指示将消息放入哪个缓冲区,outj(j=1,…,n2)用来指示Bj从哪个缓冲区中取消息,这些变量的初值均为0。Ai,Bj的
6、算法描述如下:Ai(i=1,…,n1):beginrepeatfork:=1ton2dowait(empty[k]);wait(mutex);将Ai的消息放入第in个缓冲区的所有n2格中;in:=(in+1)modm;signal(mutex)fork:=1ton2dosignal[full[k]];untilfalseendBj(j=1,…,n2):beginrepeatwait(full[j]);wait(mutex);从第outj个缓冲区的第j格中取出消息;outj:=(outj+1)modn2;sig
7、nal(mutex);signal[empty[j]];将消息写到数据区中;untilfalseend【例3】设有两个生产者进程A、B和一个销售进程C,他们共享一个无限大的仓库,生产者每次循环生产一个产品,然后入库供销售者销售;销售者每次循环从仓库中取出一个产品进行销售。如果不允许同时入库,也不允许边入库边出库,而且要求生产A产品和B产品的件数满足以下关系:-n≤A的件数-B的件数≤m其中n、m是正整数,但对仓库中A产品和B产品的件数无上述要求,请用信号量机制写出A、B、C三个进程的工作流程。分析:本题中存在
8、着以下的同步和互斥关系:(1)生产者A、B和消费者C之间,不能同时将产品入库和出库,故仓库是一个临界资源。(2)两个生产者之间必须进行同步。当生产者的A、B产品的件数之差大于等于m时,生产者A必须等待;小于等于-n时,生产者B必须等待。这种关系可想象成有两种令牌,分别跟允许A和B生产的产品数量相关,A和B必须取得对应的令牌后才能生产产品,故这两类令牌也就是两种临界资源。(3)生产者和销售者之间也必有