第2章PV练习.ppt_第1页
第2章PV练习.ppt_第2页
第2章PV练习.ppt_第3页
第2章PV练习.ppt_第4页
第2章PV练习.ppt_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、现有输入进程PI、计算进程PC、输出进程PO并发执行。三进程共享两个缓冲区。如图所示:,PI每次读入一个数据,放入到B1中,B1大小为N1。PC每次从B1中拿出一个数据计算,然后将结果放入B2中,B2大小为N2。PO每次从B2中拿出一个数据进行输出。 要求设置合适的同步机制,保证这三个进程的同步执行。 对B1、B2要求互斥访问,解答,假定有三个进程R、W1、W2共享一个缓冲区Buffer。进程R读入数据放到缓冲区Buffer中;若缓冲区中的数为奇数,则进程W1将其取出显示;若缓冲区中的数为偶数,则进程W2将其取出显示。对它们有如下的限制条件: 1)缓冲区中每次只能存放一个数 2)只有当缓冲区中

2、没有数,或W1或W2将数取走后,进程R才可以将新读入的数放到缓冲区中。 3)进程W1或W2对每次存入缓冲区中的数只能显示一次,且W1和W2都不能从空的缓冲区中取数。 假定开始时,缓冲区为空。利用记录型信号量及wait、signal操作写出三个并发进程正确工作程序。,解答,某高校计算机系开设网络课并安排上机实习,假设机房共有2m台机器,有2n名学生,规定: 每两个学生组成一组,各占一台机器,协同完成上机实习; 只有一组两个学生到齐,并且此时机房有空闲机器时,该组学生才能进入机房; 上机实习由一名教师检查,当学生上完机后,教师检查完一组学生的实习后,这组学生才能同时离开。 试用P,V操作模拟上机实

3、习的过程。 (提示:除了有学生和教师进程外,还应该有门卫进程),解答,var s,s1,s2:semaphore:=1,0,0 begin parbegin PR:begin repeat 从输入设备读到一个数B; wait(s); 放入; if B=奇数 then signal(s1); else signal(s2); until false; end; PW1:begin repeat wait(s1); x:=B; signal(s);,打印x; until false; end; PW2:begin repeat wait(s2); y:=B; signal(s); 打印y; unt

4、il false; end; parend,student:=0; computer:=2m enter:=0 finish:=0 test:=0; student: begin P(computer) ;得到一台计算机 V(student) ;有学生来,通知门卫 P(enter) ; 等待进入 Practice; V(finish); 结束,通知教师 P(test); 等待教师检查 V(computer); 释放计算机资源 End;,Teacher: begin P(finish);等待学生实习结束 P(finish); 等另一学生实习结束 Check; V(test); 检查完成 V(te

5、st); 检查完成 End; Guard: begin P(student);等待学生到达 P(student); 等待另一学生到达 V(enter); 允许学生进入 V(enter); 允许另一学生进入 End;,某车站售票厅,任何时刻最多可容纳 20 名购票者进入,当售票厅中少于 20 名购票者时,则厅外的购票者可立即进入,否则需在外面等待。若把一个购票者看作一个进程,请回答下列问题: (1) 用 PV 操作管理这些并发进程时,应怎样定义信号量,写出信号量的初值以及信号量各种取值的含义。 (2) 根据所定义的信号量,利用PV操作写出能正确并发执行的进程。 (3) 若欲购票者最多为 n 个人

6、,写出信号量可能的变化范围 ( 最大值和最小值 ) 。,答:(1) 定义一信号量 S ,初始值为 20 。 意义: S0 S 的值表示可继续进入售票厅的人数 S=0 表示售票厅中已有 20 名顾客 ( 购票者 ) S0 |S| 的值为等待进入售票厅的人数,(2)COBEGIN PROCESS Pi(i=1 , 2 , ) begin ; P(S) ; 进入售票厅; 购票; 退出; V(S) ; end ; COEND,(3) S 的最大值为 20 S 的最小值为 20-n,把学生和监考老师都看作进程,学生有N人, 教师1人。考场门口每次只能进出一个人,进考场原则是先来先进。当N个学生都进入考场

7、后, 教师才能发卷子。学生交卷后可以离开考场, 教师要等收上来全部卷子并封装卷子后才能离开考场。 (1) 问共需设置几个进程? (2) 试用P、V操作解决上述问题中的同步和互斥关系。,答: (1) 问共需设置2个进程,学生进程和教师进程。,(2),解:semaphore S_Door;/ 能否进出门,初值1 semaphore S_StudentReady;/ 学生是否到齐,初值为0 semaphore S_ExamBegin;/ 开始考试,初值为0 semaphore S_ExamOver;/ 考试结束,初值为0 int nStudentNum = 0;/ 学生数目 semaphore S_

8、Mutex1/互斥信号量,初值为1 int nPaperNum = 0;/ 已交的卷子数目 semaphore S_Mutex2 /互斥信号量,初值为1 void student( ) P(S_Door); 进门; V(S_Door); P(S_Mutex1); nStudentNum +; if(nStudentNum = N) V(S_StudentReady); V(S_Mutex1); P(S_ExamBegin);/ 等老师宣布考试开始,void teacher( ) P(S_Door); 进门; V(S_Door); P(S_StudentReady);/等待最后一个学生来唤醒 发卷子; for(i = 1; i = N; i+) V(S_ExamBegin); P(S_ExamOver); / 等待考试结束 封装试卷; P(S_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论