欢迎来到天天文库
浏览记录
ID:30777857
大小:71.50 KB
页数:6页
时间:2019-01-03
《pv操作参考程序》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、11、有3个并发进程R、M、P,它们共享同一缓冲区。进程R负责从输入设备读信息,每读入一个记录后,就把它放入缓冲区中;进程M在缓冲区中加工读入的记录;进程P把加工后的记录打印输出。读入的记录经加工输出后,缓冲区又可以存放下一个记录。试写出它们能够正确执行的并发程序。答:Begina:=O;b:=O;c:=l;cobeginR:beginRepeatP(c);从输入设备读一记录到缓冲区;V(a);UntilfalseEnd;M:beginRepeatP(a);在缓冲区屮加工读入的记录;V(b);UntilfalseEnd;P:BeginRepeat
2、P(b);打印加工后的记录;V(c);UntilfalseCoendEnd;注:为了保证r首先执行,所以信号量c的初值应设为“1”。此外,市制约关系图可以看出,R、M和P不会竞争缓冲区资源,故无需设置用于互斥的公用信号量。12、设有进程A、B、C,分别调用过程get、copy和put对缓冲区S和T进行操作。其中get负责把数据块输入缓冲区S,copy负责从缓冲区S中提取数据块复制到缓冲区T中,put负责从缓冲区T屮取信息打印,如图所示。试描述get、copy及put的操作过程]三过程工作示意BeginEmptyIEmpty2Empty1:=1;e
3、mpty2:=1;Fulll:=0;full2:=0;CobeginA:beginRepeatP(emptyl);将数据块输入缓冲区s;V(fulll);UntilfalseEnd;B:beginRepeatP(fulll);从缓冲区S中提取数据;V(emptyl);P(empty2);将数据复制到缓冲区T;V(full2)UntilfalseEnd;C:beginRepeatP(fuH2);从缓冲区T中取信息打印;V(empty2)UntilfalseEndcoendEnd;注:进程B对进程A来说是消费者,而对进程C来说是生产者,进程B兼有消费
4、者和生产者的功能。此外,为了在初启时能保证三进程按制约关系顺利执行,信号量empty1和empty2的初值均为“1”。13、用P、V操作实现下述问题的解。桌上有一个盘子,可以存放一个水果。父亲总是放苹果到盘子中,而母亲总是放香蕉到盘子中;一个儿子专等吃盘中的香蕉,而一个女儿专等吃盘中的苹果。答:盘子是临界资源,应设置一互斥信号量mutex来实现放水果的互斥,其初值为1。此外,父亲和女儿、母亲和儿子之间存在同步关系,即分别设置信号量apple和banana来分别实现这种同步关系,其初值均为0。4个进程的并发程序如下:BeginMutex:=l;Ap
5、ple:=0;banana:=0;CobeginFather:beginRepeatP(mutext);向盘屮放苹果;V(apple)UntilfalseEnd;Mother:beginRepeatP(mutext);向盘中放香蕉;V(banana)UntilfalseEnd;Daughter:beginRepeatP(apple)取盘中苹果;V(mutex)UntilfalseEnd;SonibeginRepeatP(banana);取盘中香蕉;V(mutex)UntilfalseEndCoendEnd;14、在一个盒子里,混装了数量相等的围棋
6、黑子和白子。现在要用自动分拣系统把白子和黑子分开。设系统有两个进程P1和P2,其中P1拣白子、P2拣黑子。规定每个进程每次只拣一子。当一进程正在拣子时,不允许另一进程去拣;当一进程拣了一子时,必须让另一进程去拣。试写出这两个并发进程能正确执行的程序。答:可以设置两个信号量S1和S2来协调进程P1和P2之间的同步,此外,由于不存在进程P1和进程P2之间同时収子的竞争问题,因此不必设置互斥信号量。程序如下:BeginSl:=l;s2:=0;CobeginPl:beginRepeatP(S1);拣白子;V(s2)UntilfalseEnd;P2:beg
7、inRepeatP(S2);拣黑子;V(S1)UntilfalseEndCoendEnd;15、有一个理发师,一把理发椅和n把供等候理发的顾客坐的椅子。如果没有顾客,则理发师便在理发椅子上睡觉;当一个顾客到来时,必须唤醒理发师进行理发;如果理发师正在理发吋又有顾客来到,则如果有空椅子可坐,他就坐下来等,如果没有空椅子,他就离开。为理发师和顾客各编一段程序描述他们的行为,要求不能带有竞争条件。答:本题可看作是n个生产者和一个消费者问题。顾客作为生产者,每到來一个就使计数器rc加1,以便让理发师理发(消费)至最后一个顾客(产品)。并且,第一个到来的顾
8、客应负责唤醒理发师;如果不是第一个到达的顾客,则在有空椅子的情况下坐下等待,否则离开理发厅(该信息可由计数器rc获得)。理发师与顾客的并
此文档下载收益归作者所有