- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
生产者–消费者问题(即有界缓冲区问题) 问题 一群生产者向一个有界缓冲区存放产品,只要缓冲区未满,就可以存入;又有一群消费者从有界缓冲区取走产品,只要缓冲区未空,就可以取走。要求存与存之间、取与取之间和存与取之间不能同时进行,即一次只能有一个生产者或者一个消费者进入缓冲区,也就是所有的生产者与消费者必须互斥地访问缓冲区。 当缓冲区满时,生产者停止放入产品,当缓冲区空时,消费者停止取走产品,即生产与消费同步。这里,生产的产品与消费的产品是等效的。 用P、V操作解决。 设置信号量: 互斥使用有界缓冲区的信号量S,初值为1; 同步信号量: 有界缓冲区的大小,即可以存放产品的最大数n,初值为k; 有界缓冲区中已经存放的产品个数m,初值为0。 生产者–消费者问题的解决如图所示。 图 生产者-消费者问题 生产产品→缓冲区 生产者 P(n) V(s) P(s) V(m) 缓冲区→取走产品 消费者 P(m) V(s) P(s) V(n) 问题(课本pp42的问题): (1)若消费速度较生产速度快得多,上图可以简化吗?如何简化? (2)若P(n)与P(s)颠倒,会产生什么问题? (3)若V(s)与V(m)颠倒,会如何?V(s)与V(n)呢? 解答 (1)若消费速度较生产速度快得多,上图可以简化吗?如何简化? 答案:可以简化,简化结果如图。 因为消费速度较生产速度快得多,缓冲区总是空的,相当于p(n)操作不会出现等待状态,故可以省略简化,v(n)不需要唤醒,也可以省略简化。 简化结果 图 生产者-消费者问题简化结果 生产产品→缓冲区 生产者 V(s) P(s) V(m) 缓冲区→取走产品 消费者 P(m) V(s) P(s) 解答 (2)若P(n)与P(s)颠倒,会产生什么问题? 答案:若P(n)与P(s)颠倒,会产生死锁问题。 因为有可能出现缓冲区满,n=0,s=1的情形: 生产者执行P(s),则s变为s=0; 生产者执行P(n),则n变为n=-1,生产者阻塞。 消费者执行P(m); 消费者执行P(s),则s变为s=-1,消费者阻塞; 这样进入相互等待状态,如果没有外界作用,则导致死锁。 解答 (3)若V(s)与V(m)颠倒,会如何?V(s)与V(n)呢? 答案:不会死锁。因为v操作,是释放资源,不存在死锁的条件。 问题 有一台计算机,具有1MB内存,操作系统占用200KB,每个用户占用200KB。如果用户进程等待I/O的时间为80%,若增加1MB内存,则CPU的利用率提高多少? 解答 每个进程等待的百分比率为p,则n个进程同时等待的概率为pn,当n个进程同时等待I/O期间CPU是空闲的,故CPU的利用率是 1-pn 除去操作系统占用的内存,剩余内存能容纳4个用户进程,由于每个用户进程等待I/O的时间为80%,故CPU的利用率为 1-(80%)4=59% 解答 若再增加1M内存,内存就能容纳9个用户进程了,CPU的利用率为 1-(80%)9=87% 利用率提高为 (87%)/(59%)=147% 147%-100%=47% 增加1M内存CPU利用率47%。 问题 若内存中存在3道程序A、B、C,它们按照A、B、C的优先次序运行。各程序的计算轨迹为: A:计算(20ms)、I/O(30ms)、计算(10ms) B:计算(40ms) 、I/O(20ms)、计算(10ms) C:计算(10ms)、I/O(30ms)、计算(20ms) 问:如果三道程序都使用相同的设备进行I/O(即程序用串行方式使用设备,调度开销忽略不计)。试分别画出单道和多道运行的时间关系图。两种情况下,CPU的平均利用率各为多少? 解答 单道:总运行时间是190ms,CPU的利用率是110/190=61.3%。 解答 多道的总运行时间140ms,CPU的利用率是110/140=78.6%。 问题 假设有一种低级调度算法是让“最近使用处理器较少的进程”运行,试解释这种算法对“I/O繁重”型作业有利,但并不是永远不受理“处理器繁重”型作业。 解答 因为I/O繁忙作业忙于I/O,所以使用CPU较少,按照调度策略算法优先执行。一个进程等待CPU时间够长,是最近最少使用CPU进程,被优先调度。 题二:计算作业周转时间 操作系统中采用多道程序设计技术以提高CPU及各种资源的利用率, 试以下例比较说明. 假定系统中有一个CPU, 一台I/O设备, 二者可同时工作, 有三个作业X,Y,Z, 各自的程序行为是: I/O CPU I/O CPU I/O (单位: ms) X 20 20 20 30 20 Y 40 30
文档评论(0)