进程同步例题

进程同步例题

ID:37846071

大小:281.12 KB

页数:10页

时间:2019-06-01

进程同步例题_第1页
进程同步例题_第2页
进程同步例题_第3页
进程同步例题_第4页
进程同步例题_第5页
资源描述:

《进程同步例题》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、2003.试题一.4.关于临界区问题(criticalsectionproblem)是一个算法(假设只有进程P0和P1可能进入该临界区),如下(i为0或1),该算法_____A、不能保证进程互斥进入临界区,且会出现“饥饿”(Starvation)B、不能保证进程互斥进入临界区,但不会出现“饥饿”C、保证进程能互斥进入临界区,但会出现“饥饿”D、保证进程互斥进入临界区,不会出现“饥饿”reapeatretry:if(turn≠-1)turn:=i;if(turn≠i)gotoretry;turn:=-1;criticalSection(临界区)turn=0;remainderSecti

2、on(其他区域)untilfalse;解:应该选A。首先考虑不能保持互斥:P0令turn=0,然后P1执行retry发现turn≠-1,所以P1令turn=1;然后或者P0或者P1先后令turn=-1,然后都进入临界区。如果某个进程P0(或P1)从临界区出来(这时turn=0)又要进入,则令turn=i,则它又能进入,重复该过程则可能导致另外的一个进程饥饿。2004.试题5.假设缓冲区buf1和缓冲区buf2无限大,进程p1向buf1写数据,进程p2向buf2写数据,要求buf1数据个数和buf2数据个数的差保持在(m,n)之间(m

3、行顺序之间的制约关系,只给出了一个数量上的制约关系,即m<=

4、buf1数据个数-buf2数据个数

5、<=n.不需要考虑缓冲区的大小,只需要考虑两个进程的同步和互斥.p2向buf2写数据比p1向buf1写数据的次数最少不超过m次,最多不能超过n次,反之也成立.所以是一个生产者和消费者问题。将等式展开得:(1)m<=(buf1数据个数-buf2数据个数)<=n;(2)m<=(buf2数据个数-buf1数据个数)<=n;由于m,n都是正数,等式只有一个成立,不妨设(1)成立.在进程p1和p2都没有运行时,两个缓冲区数据个数之差为0,因此,p1必须先运行,向buf1至少写m+1个数据后再唤醒p

6、2运行.信号量s1表示p1一次写入的最大量,初值为n(这时buf2数据个数为0),s2表示p2一次写入的最大量,初值为-m(这时buf1数据个数为0).beginvarmutex1=1,mutex2=1,s1=n,s2=-m:semaphore;cobeginprocessp1beginrepeatgetdata;p(s1);p(mutex1);写数据到buf1;v(mutex1);v(s2);endprocessp2beginrepeat;getdata;p(s2);p(mutex2);//两个进程的互斥信号量应该用同一个mutex即可写数据到buf2;v(mutex2);v(s1

7、);endcoendend注:p1和p2每次执行时需要进行一些额外的操作.对于p2来说,它首先必须在自己的缓冲区buf2中写入至少m个数据,此后p1和p2的同步可简单通过两个信号量来控制.题目的一个变形是要求:-m<=(buf2数据个数-buf1数据个数)<=n;那么信号量的初值就变成m和n,若只有p1向buf1放入数据而p2不放入数据到buf2中,则p1最多可放m次.因此,设置信号量s1,初值为m,此外,每当p2放入一个数据到buf2中时,则使信号量s1增1,即p1增加一次放入数据到buf1的机会.反之,若只有p2向buf2放入数据而p1不放入数据到buf1中,则p2最多可放次.因

8、此,设置信号量s2,初值为n,此外,每当p1放入一个数据到buf1中时,则使信号量s2增1,即p2增加一次放入数据到buf1的机会.三、某车站售票厅,任何时刻最多可容纳20名购票者进入,当售票厅中少于20名购票者时,则厅外的购票者可立即进入,否则需在外面等待。若把一个购票者看作一个进程,请回答下列问题:(1)用wait、signal操作管理这些并发进程时,应怎样定义信号量,写出信号量的初值以及信号量各种取值的含义。(2)根据所定义的信号量,写出同步算法,以保证进程能够正确地并发执行。(3)若欲购票者最多为n个人,写出信号量可能的变化范围(最大值和最小值)。Answer:(1)定义一信

9、号量S,初始值为20。意义:S>0S的值表示可继续进入售票厅的人数S=0表示售票厅中已有20名顾客(购票者)S<0

10、S

11、的值为等待进入售票厅的人数(2)COBEGINPROCESSPi(i=1,2,……)beginWAIT(S);//进入售票厅;购票;SIHNAL(S);//退出;end;COEND(3)S的最大值为20S的最小值为20-n七、有n个进程(P1,P2,…,Pn)向容量为M的缓冲区写数据,每个进程一次写1个数据,当缓冲区写满时,另一个读进程P

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

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

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