- 1、本文档共36页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二章 6、答:设信号量empty用于表示空盘子的数量,信号量apple用于计数,表示盘子中的苹果数目,信号量orange用于计数,表示盘子中的桔子数目。 Semaphore empty=1,apple=0,orange=0 dad(){ while(1){ prepare an apple; P(empty); put an apple on the plate; V(apple ); }} 第二章 son(){ while(1) { P(orange); take an orange from the plate; V(empty); eat the orange; }} 第二章 7、答: 为了使写者优先,在原来的读优先算法基础上增加一个初值为1的信号量S,使得当至少有一个写者准备访问共享对象时,它可使后续的读者进程等待写完成; 初值为0的整型变量writecount,用来对写者进行计数;初值为1的互斥信号量wmutex,用来实现多个写者对writecount的互斥访问。 第二章 writer(){ while(1){ P(wmutex); if(writecount= =0) P(S); writecount++; V(wmutex); P(mutex); 写文件; V(mutex); P(wmutex); writecount- -; If(writecount= =0) V(S); V (wmutex); }} 第二章 reader (){ while ( 1) { P(S); P(rmutex); if(readcount= =0) P(mutex); readcount++; V(rmutex); V(S); 读文件; P(rmutex); readcount --; if(readcount==0) V(mutex); V(rmutex); }} 第二章 9、答: 信号量sofa:表示等候椅数,初值为n 信号量empty:表示理发椅空,初值为1 信号量full:表示理发椅上有顾客,初值为0 count:记录等候椅上的人数,初值为0 信号量mutux:用来实现对变量count的互斥访问 Var mutex,sofa,empty,full: semaphore=1,n,1,0; count: integer: =0; 第二章 Guest: begin repeat P(mutex); if (count=n) then begin V(mutex); 离开; end else 第二章 begin count:=count+1; if (count1) then //多个顾客时,坐等候椅上 V(mutex); P(sofa); 坐沙发等; P(empty); 坐椅子上; V(sofa);V(full); else //只有一个顾客时,坐到理发椅上 begin V(mutex); P(empty); 坐椅子上; V(full); end 第二章 剪发 离开; P(mutex); count:=count-1; V(mutex); end until false end 第二章 11、答: 本题中中共有三类进程,相当于机房管理员进程guard,学生进程student和教师进程teacher。 相应的信号量和各个进程描述如下: semaphore computer=2m; /*对应于计算机的资源信号量*/ semaphore student=0; /*对应于欲进入机房的学生*/ semaphore enter=0; /*用来控制学生是否可进入
文档评论(0)