操作系统 操作系统练习.ppt

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

操作系统练习 车站售票厅,最多可容纳20名购票者。当售票厅中少于20人时,厅外的购票者可立即进入,否则需在外面等待。把每个购票者看作一个进程。1)写进程同步;2)若所有购票者共n人,则信号量可能的变化范围是什么? 复印室里有一个操作员为顾客复印资料,有5把椅子供顾客休息等待复印。如果没有顾客,则操作员休息。当顾客来到复印室时,如果有空椅子则坐下来,并唤醒操作员;如果没有空椅子则必须离开复印室。 1、售票厅 Semaphore space=20; Process pi(i=1,2,…) { wait(space); 进入售票厅; 购票; 退出售票厅; signal(space); } Main() { cobegin { pi(); } } 2、复印室打印 信号量说明: Customers表示正在等待复印的顾客数量(不包括正在复印的顾客) Operator记录正在等待顾客的操作员数,只有1和0 Mutex用于对waiting的访问 变量说明: Waiting表示等待的顾客数量,与customers的值相等,为了解决不能读取信号量当前值的问题 Semaphore customers=0, operator=0, mutex=1; Waiting=0; Process operator() //操作员进程 { while(1) { wait(customers); //等待顾客到来 复印; signal(operator); //通知顾客已复印 } } Process customeri() //顾客进程i { 进入复印室; wait(mutex); if (waiting5) { waiting++; signal(customers); signal(mutex); wait(operator); wait(mutex); waiting--; signal(mutex); } else signal(mutex); 离开复印室; } Main() { cobegin { operator(); customeri(); } } 做饭可以使用电饭煲或者普通的锅,使用操作系统的观点解释为什么使用电饭煲做饭比较好。 为什么文件在同一个分区内移动比不同分区间移动快? 哪些情况下会出现I/O通道繁忙? 举一个多进程能加快程序运行的例子并说明原因 做饭可以使用电饭煲或者普通的锅,使用操作系统的观点解释为什么使用电饭煲做饭比较好。 思路:类似DMA的优点 为什么文件在同一个分区内移动比不同分区间移动快? 改变文件目录/磁盘IO 哪些情况下会出现I/O通道繁忙? 复制文件、内存不足、高速下载、病毒、程序读写文件 举一个多进程能加快程序运行的例子并说明原因 输入计算打印\矩阵计算 进程A、B、C、D、E需要的执行时间为10、6、20、7、3分钟,其中进程A要求必须在20分钟内完成,求5个进程的最短平均等待时间 使用段式存储管理配合伙伴系统最多可能产生多少空间浪费? 进程A、B、C、D、E需要的执行时间为10、6、20、7、3分钟,其中进程A要求必须在20分钟内完成,求5个进程的最短平均等待时间 EBADC (0+3+9+19+26)/5=11.4 使用段式存储管理配合伙伴系统最多可能产生多少空间浪费? 50% S1:a=b+c, S2:b=c+d, S3:c=d+e, S4:d=e+1, S5:e=2。用信号量描述前趋关系。 9、S1:a=b+c, S2:b=c+d, S3:c=d+e, S4:d=e+1, S5:e=2。用信号量描述前趋关系。 Semaphore s1=0,s2=0,s3=0,s4=0,s5=0; Process P1() { wait(s2); a=b+c; } Process P2() { wait(s3); b=c+d; signal(s2); } Process P3() { wait(s4); c=d+e; signal(s3); } Process P4() { wait(s5); d=e+1; signal(s4); } Process P5() { e=2; signal(s5); } Main() { cobegin { P1(); P2(); P3(); P4(); P5(); } } 下一个CPU区间长度无法精确计算,但可根据历史数据估算。计算公式是τn+1= αtn+(1-α)τn。当α=0.5时,求该方法计算准确度为100%的充要条件。 实时系统任务A每10秒执行一次,每次执行需要3秒;任务B每20秒执行

文档评论(0)

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

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

1亿VIP精品文档

相关文档