操作系统课外习题答案讲述.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统课外习题答案讲述

第二章 1. 有三个进程PA、PB和PC合作解决文件打印问题:PA将文件记录从磁盘读入主存的缓冲区1,每执行一次读一个记录;PB将缓冲区1的内容复制到缓冲区2,每执行一次复制一个记录;PC将缓冲区2的内容打印出来,每执行一次打印一个记录。缓冲区的大小等于一个记录的大小。请用PV操作来保证文件的正确打印。 Empty1,empty2,full1,full2:semaphore; (1分) Empty1=empty2=1; (1分) Full1=full2=0; (1分) Main() (1分) { Cobegin PA(); PB(); PC(); coend; } PA() (2分) { While(1) { 从磁盘读一个记录; P(empty1); 将记录存入缓冲区1; V(full1); } } PB() (2分) { While(1) { P(full1); 从缓冲区1中取出记录; V(empty1); P(empty2); 将记录存入缓冲区2; V(full2); } } PC() (2分) { While(1) { P(full2); 从缓冲区2中取出记录; V(empty2); 打印记录; } } 2.有一只最多能装2只兔子的铁笼子,猎人仅能向笼子中放入兔子(每次只能放入1只),若笼子是满的,则猎人必须等待;饭店老板仅能从笼子中取兔子(每次只能取出1只),若笼子是空的则他也必须等待。假设初始时笼子是空的。定义信号量并初始化,使用P、V操作模拟猎人和饭店老板进程之间的同步与互斥。 mutex,empty,fullsemaphore; 1分 mutex=1,empty=2;full=0; 2分 以下内容7分 cobegin pcocedure Hunter(x) begin: P(empty); P(mutex); //放兔子; V(mutex); V(full); Goto begin; pcocedure Boss(x) begin: P(full); P(mutex); //放兔子; V(mutex); V(empty); Goto begin; coend; 3.桌上有一空盘,最多允许存放一只水果。爸爸可向盘中放一个苹果或放一个桔子,儿子专等吃盘中的桔子,女儿专等吃苹果。 试用P、V操作实现爸爸、儿子、女儿三个并发进程的同步。 分析:在本题中,爸爸、儿子和女儿共用一个盘子,盘子一次只能放一个水果。当盘子为空时,爸爸可以试着将一个水果放入盘中,若放入盘子中的是橘子,则允许儿子吃,女儿必须等待;若放入盘子中的是苹果,则允许女儿吃,儿子必须等待。 在本题中,应设置3个信号量dish、apple、orange,信号量dish表示盘子是否为空,其初值为1;信号量apple表示盘中是否有苹果,其初值为0;信号量orange表示盘中是否有橘子,其初值为0。进程之间的同步描述如下: Semaphore dish=1; Semaphore apple,orange=0; Main() { cobegin father(); son(); daughter(); coend } Father() { while(true) { p(di

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档