《操作系统pv操作典型问题学习教案.pptx》由会员分享,可在线阅读,更多相关《操作系统pv操作典型问题学习教案.pptx(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、会计学1操作系统操作系统pv操作典型问题操作典型问题第一页,编辑于星期日:十五点 二十九分。司机与售票员的问题司机与售票员的问题司机与售票员的问题司机与售票员的问题 司机司机 P1 P1 售票员售票员 P2P2 semaphore s1=0,s2=0;semaphore s1=0,s2=0;while(true)while(true)while(true)while(true)P(S1);P(S1);启动车辆;启动车辆;关门;关门;V(S1);V(S1);正常运行;正常运行;售票;售票;P(S2);P(S2);到站停车;到站停车;开门;开门;V(S2);V(S2);第1页/共16页第二页,编辑
2、于星期日:十五点 二十九分。前驱关系前驱关系n n.一个快餐厅有4 类职员:(1)领班:接受顾客点菜;(2)厨师:准备顾客的饭菜;(3)包工:将做好的饭菜打包;(4)出纳员:收款并提交食品。每个职员可被看作一个进程,试用一种同步机制写出能让四类职员正确并发运行的程序。第2页/共16页第三页,编辑于星期日:十五点 二十九分。典型的进程同步问题,可设四个信号量典型的进程同步问题,可设四个信号量典型的进程同步问题,可设四个信号量典型的进程同步问题,可设四个信号量S1 S1、S2 S2、S3 S3 和和和和S4 S4 来来来来协调进程工作。协调进程工作。协调进程工作。协调进程工作。var S1,S2,
3、S3,S4:semaphore;var S1,S2,S3,S4:semaphore;S1:=1;S2 S1:=1;S2:=S3:=S4:=0;=S3:=S4:=0;cobegin cobegin process P1 process P1begin begin repeat repeat 有顾客到来;有顾客到来;P(S1)P(S1);接受顾客点菜;接受顾客点菜;V(S2)V(S2);untile falseuntile false;end end consumerconsumerprocess P4 begin repeat P(S4);收款并提交食品;V(S1);ufltile false;
4、end coend.process P2 begin repeat P(S2);准备顾客的饭菜;v(S3);untile false;end process P3 begin repeat P(S3);将做好的饭菜打包;V(S4);untile false;end 第3页/共16页第四页,编辑于星期日:十五点 二十九分。拣子问题拣子问题n n在一个盒子里,混装了数量相等的黑白围棋子 现在用自动分拣系统把黑子、白子分开,设分拣系统有二个进程P1 和P2,其中P1 拣白子;P2 拣黑子。规定每个进程每次拣一子;当一个进程在拣时,不允许另一个进程去拣;当一个进程拣了一子时,必须让另一个进程去拣试写出
5、两进程P1 和P2 能并发正确执行的程序。第4页/共16页第五页,编辑于星期日:十五点 二十九分。设置两个信号量设置两个信号量设置两个信号量设置两个信号量S1S1和和和和S2S2来协调进程来协调进程来协调进程来协调进程P1P1和和和和P2P2之间的同步。假定先让之间的同步。假定先让之间的同步。假定先让之间的同步。假定先让P1P1拣白子,则信号量拣白子,则信号量拣白子,则信号量拣白子,则信号量S1S1和和和和S2S2的初值分别为的初值分别为的初值分别为的初值分别为1 1和和和和0 0。两个并发进程相应的程序如下:。两个并发进程相应的程序如下:。两个并发进程相应的程序如下:。两个并发进程相应的程序
6、如下:P2:beginrepeat P(S2);拣黑子;V(S1);until falseendcoendendbeginS1:=1;S2:=0;cobeginP1:beginrepeat P(S1);拣白子;V(S2);until falseend第5页/共16页第六页,编辑于星期日:十五点 二十九分。n n有一材料保管员,他保管纸和笔若干。有A、B 两组学生,A 组学生每人都备有纸,B 组学生每人都备有笔任一学生只要能得到其他一种材料就可以写信。有一个可以放一张纸或一支笔的小盒,当小盒中无物品时,保管员就可任意放一张纸或一支笔供学生取用,每次允许一个学生从中取出自己所需的材料,当学生从盒中
7、取走材料后允许保管员再存放一件材料,请用信号量与P、V 操作。典型生产者问题典型生产者问题1第6页/共16页第七页,编辑于星期日:十五点 二十九分。cobegin cobegin process process 保管员保管员begin begin repeat repeat P(S);P(S);take a material intobox;take a material intobox;if(box)=Paper then V(Sa if(box)=Paper then V(Sa););else V(Sb);else V(Sb);untile false;untile false;enden
8、dProcess B组学生begin repeat P(Sb);P(mutexb);take the paper from box;V(mutexb);V(S);wnte a letter;untile false;end Coend.semaphore s,Sa,Sb,mutexa,mutexb;s=1;mutexa=1;mutexb=1;sa=0;sb=0;box(PaPer,pen);Process A组学生begin repeat P(Sa);P(mutexa);take the pen from box;V(mutexa);V(S);write a letter;untile fal
9、se;end第7页/共16页第八页,编辑于星期日:十五点 二十九分。典型生产者问题典型生产者问题2 桌上有一只盘子,最多可以容纳两个水果,每次仅能放入或取出一个水果。爸爸向盘子中放苹果(apple),妈妈向盘子中放桔子(orange),两个儿子专等吃盘子中的桔子,两个女儿专等吃盘子中的苹果试用:信号量和P、V 操作,描述进程同步。第8页/共16页第九页,编辑于星期日:十五点 二十九分。beginmutex:=1;empty:=2;apple:=0;orange:=0;cobeginfather:begin repeat P(empty);P(mutex);向盘中放苹果;V(mutex);V(a
10、pple);until falseendmother:begin repeat P(empty);P(mutex);向盘中放桔子;V(mutex);V(orange);until falseenddaughteri(i=1,2;):begin repeat P(apple);P(mutex);取盘中苹果;V(mutex);V(empty);until falseendsoni(i=1,2):begin repeat P(orange);P(mutex);取盘中桔子;V(mutex);V(empty);until falseendcoendend;第9页/共16页第十页,编辑于星期日:十五点 二
11、十九分。哲学家进餐哲学家进餐 解决办法解决办法1 至多只允许有四位哲学家同时去拿左边的筷子,最终能保证至少有一位哲学家能够进餐,并在用毕时能释放出他用过的两只筷子,从而使更多的哲学家能够进餐。第10页/共16页第十一页,编辑于星期日:十五点 二十九分。semaphore seat=4;chopstick5=1,1,1,1,1;process iwhile(ture)think();P(seat);P(chopsticki);P(chopsticki+1%5);eat();V(chopsticki);V(chopsticki+1%5);V(seat);第11页/共16页第十二页,编辑于星期日:十
12、五点 二十九分。哲学家进餐哲学家进餐 解决办法解决办法3n n规定奇数号哲学家先拿他左边的筷子,然后再去拿右边的筷子;而偶数号哲学家则相反。按此规定,将是1、2号哲学家竞争1号筷子;3、4号哲学家竞争3号筷子。即五位哲学家都先竞争奇数号筷子,获得后,再去竞争偶数号筷子,最后总会有一位哲学家能获得两只筷子而进餐第12页/共16页第十三页,编辑于星期日:十五点 二十九分。semaphore chopstick5=1,1,1,1,1;semaphore chopstick5=1,1,1,1,1;process iprocess iwhile(ture)while(ture)think();think
13、();if(i%2!=0)if(i%2!=0)P(chopsticki);P(chopsticki);P(chopsticki+1%5);P(chopsticki+1%5);else else P(chopsticki+1%5);P(chopsticki+1%5);P(chopsticki);P(chopsticki);eat();eat();V(chopsticki);V(chopsticki);V(chopsticki+1%5);V(chopsticki+1%5);第13页/共16页第十四页,编辑于星期日:十五点 二十九分。思考:思考:n n某寺庙有小和尚和老和尚各若干人,水缸一只,由小和尚提水入缸给老和尚饮用。水缸可容水10 桶,水取自同一口水井中。水井径窄,每次仅能容一只水桶取水,水桶总数为3 个。若每次入、取水仅为1 桶,而且不可同时进行。试用一种同步工具写出小和尚和老和尚入水、取水的活动过程。第14页/共16页第十五页,编辑于星期日:十五点 二十九分。思考:思考:n n有三个并发进程:R 负责从输入设备读入信息块,M 负责对信息块加工处理;P 负责打印输出信息块。今提供;n n1)一个缓冲区,可放置K 个信息块;n n2)二个缓冲区,每个可放置K 个信息块;第15页/共16页第十六页,编辑于星期日:十五点 二十九分。
限制150内