操作系统.docxVIP

  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文档。上传文档
查看更多
操作系统

生产者——消费者问题1.从读卡机上读进N张卡片,然后复制一份,要求复制出来的卡片与读进的卡片完全一样。该任务由三个进程get,copy,和put及两个缓冲区buffer1 和Buffer2完成。进程get的功能是把一张卡片的信息从读卡器读入buffer1;进程copy是把buffer1中的信息复制到buffer2;put是把buffer2的信息取出并在打印机上打印互斥信号量S1=1,S2=1同步信号量:full1=0,empty1=1 为一对Full2=0,empty2=1 为一对Get processWhile(1){Read datalWait (empty1);Wait(s1)put data into buffer1Signal (s1)Signal(full1)}Copy processWhile (1){Wait(full1)Wait(s1)Copy data from buffer1Signal(s1)Signal(empth1)Wait(s2)Put data into buffer2Signal(s2)Signal(full2)}Put processWhile(1)Wait (full2)Wait(s2)Get data from buffer2Signal(s2)Signal(empty2)Print data on printer2.在一个箱子里混合装有数量相等的黑色围棋子和白棋子,现要用自动分拣系统把黑子和白字分开,该系统由两个冰法执行的进程组成,功能如下--进程A专门捡黑子,进程B专门捡白子;--每个进程每次只捡一个子,当一个进程在捡子时不允许另一个进程去捡子;--当一个进程捡了一个棋子以后,必须让另一个进程捡一个进程,并要求A进程首先开始定义两个同步信号 s1,s2因为要求进程A先开始,故设S1初值为1,s2初值为0;A While(1){P(s1);捡黑子V(S2)}A While(1){P(s2);捡黑子V(S1)}3.在某餐馆里有一个收银员,且同时最多允许30个顾客就餐,我们可以将顾客和收银员看成两种不同进程为了利用PV操作正确的协调这两类进程的工作,设置了四个信号量S1,S2,S3,Sn,且初值分别为1,0,0,30这三个同步关系:收银员忙,顾客等S1无人付款,收银员等S2收银员收完钱,顾客可以离开 S3一个互斥关系 30张餐桌顾客进程While(1){P(sn);Eat;V(sn)P(s1)Pay;V(s2)P(s3)leave}收银员进程:Do{P(s2);Get the money;V(s1);V(s3)}while(1);4.独木桥问题:东西方向汽车过独木桥,为了保证安全,只要桥上无车,则允许一方的汽车过桥,待一方的汽车全部通过后,另一方的汽车才允许过桥,但当另一方提出过桥时,要阻止对方未上桥的后继车辆,待桥面上的汽车过完桥后,另一方的汽车开始过桥,适用信号量和P,V,操作写出汽车过独木桥问题的同步算法,并说明每个信号量的含义。Swamphore stop,wait,mute1,mute2;Stop=1;mutex=1;mutex2=1;wait=1;Int counter1=0,counter2=0;Mute1互斥信号量,用于锁counter1Mute2互斥信号量,用于锁counter2Stop用于提出过桥请求过桥请求Wait 用于排队过桥,等于给桥加锁东边要过桥的车:P(stop);P(mutex1);Count1++;If(count1==1) p(wait);V(mutex1);V(stop);{过桥}P(mutex1);Count—If(count==0)V(wait)V(mutex1);西边要过桥的车同上操作系统的进程管理中,PV是重点和难点。信号量:信号量是个数据结构。struct semaphore{intvalue;pcb *blockqueue;}mutex;其中value是信号量的值;blockqueue是等待使用该信号量的进程排成的队列的对手指针。p操作:当一个进程对信号量mutex执行p操作时,执行两个动作:mutex.valu–;????????//申请一个资源if (mutex.value0)???//申请失败sleep();??????????????????//本进程进入该信号量等待队列睡眠v操作:当一个进程对信号量mutex执行v操作时,执行两个动作:mutex.value++;???????//释放一个资源if (mutex.value=0)???//如果有进程在等待信号量wakeup();????????????????//从该信号量的等待队列中唤醒一个进程注:操作系统会保证PV操作的原子性,也就是说当一个进程执行PV操作,检测信号

文档评论(0)

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

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

1亿VIP精品文档

相关文档