《操作系统教学资料》同步习题讲解.pptVIP

《操作系统教学资料》同步习题讲解.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
例2: 桌上有个只能盛得下一个水果的空盘子。爸爸可向盘中放苹果或桔子,儿子专等吃盘中的桔子,女儿专等吃盘中的苹果。规定:当盘子空时,一次只能放入一个水果供吃者取用。试用信号量和P、V操作实现爸爸、儿子和女儿这三个循环进程之间的同步。 解答:①所用信号量设置如下: Ⅰ)同步信号量empty,初值为1,表示盘子是空的,即儿子或女儿已把盘中的水果取走。 Ⅱ)同步信号量orange,初值为0,表示爸爸尚未把桔子放入盘中。 Ⅲ)同步信号量apple,初值为0,表示爸爸尚未把苹果放入盘中。 ②使用信号量机制的三个进程的同步描述如下: 爸爸进程(P): 儿子进程(C1): 女儿进程(C2): P(empty); P(orange ); P(apple); 将水果放入盘中; 从盘中取出桔子; 从盘中取出苹果; 若放入的是桔子, V(empty); V(empty); 则V(orange); 吃桔子; 吃苹果; 否则,V(apple); 例3、桌子上有一个空盘子,允许存放一只水果,爸爸可以向盘中放苹果,妈妈向盘子中放橘子,女儿专门吃盘子中的苹果,儿子专门吃盘子中的橘子。规定当盘子空的时候一次只能放一只水果,请用信号量实现他们之间的同步与互斥。 S:semaphore=1; 盘子是否为空 S1:semaphore=0; 是否有苹果 S2 :semaphore=0; 是否有橘子 Process Father: Begin: L1: P(S); Put Apple; V(S1); GO TO L1; End; Process Son: Begin: L3: P(S2); Get Orange; V(S); GO TO L1; End; 例4、有一个仓库,可以存放A、B两种产品,但要求: 每次只能存入一种产品(A或B); A产品数量-B产品数量M; B产品数量-A产品数量N; 其中M、N是正整数,使用P、V操作描述产品A与产品B的入库过程。 Process PA: Begin Loop: P(Sa); P(Mutex); 产品A入库; V(Mutex); V(Sb); Goto Loop; End; empty1,empty2,full1,full2:semaphore; empty1 :=1; empty2 :=1; full1 :=0; full2 :=0; process PA ( ) begin L1: 从磁盘读一个记录; P(empty1); 将记录存入缓冲区1; V(full1); goto L1 end; process PB ( ) begin L2: P(full1); 从缓冲区1取一个记录; V(empty1) P(empty2); 将记录存入缓冲区2; V(full2); goto L2 end; process PC ( ) begin L3: P(full2) 从缓冲区2取出一个记录; V(empty2); 打印输出记录; goto L3 end; P原语wait(S) { S-value--; if(S-value0) then Block(S-L); } semaphore *S; ? V原语signal(S) { S-value++; if(S-value=0) then Wakeup(S-L); } (1)确定进程: 包括进程的数量、进程的工作内容。 (2)确定进程同步互斥关系: 根据进程间是竞争临界资源还是相互合作处理上的前后关 系,来确定进程间是互斥还是同步。 (3)确定信号量: 根据进程间的同步互斥关系确定信号量个数、含义、初始值,各进程需要对信号量进行的PV操作。 (4)用类程序语言描述算法。 使用信号量解决进程同步问题的步骤: 例1:一辆公共汽车上,司机和售票员进程的同步 program 司机 {

文档评论(0)

***** + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档