操作系统讲稿2012(第三章).pptVIP

  1. 1、本文档共94页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(2). buffer为堆栈,有界,大小为n 堆栈有一个指针top,被所有的生产者和所有的消费者 使用。 Mutex:所有的生产者和消费者互斥使用top指针; 同步信号量:Empty=n ; full=0 LP: 生产一个产品; Buffer[top]=item; top=top+1 Goto LP; P(empty); P(mutex); V(mutex); V(full); LC: P(full); item =Buffer[top]; top=top-1; 消费一个产品; P(mutex); V(mutex); V(empty); Goto Lc; Buffer top (3). buffer为队列,无界 队列有两个指针in 和out,in被所有的生产者使用, out所有的消费者使用。 Mutex1:所有的生产者互斥使用in指针; Mutex2:所有的消费者互斥使用out指针。 同步信号量:full=0 LP: 生产一个产品; Buffer[in]=item; In=in+1 Goto LP; P(mutex1); V(mutex1); V(full); LC: P(full); item =Buffer[out]; out=out+1; 消费一个产品; P(mutex2); V(mutex2); Goto Lc; Buffer in out (4). buffer为堆栈,无界 堆栈有一个指针top,被所有的生产者和所有的消费者 使用。 Mutex:所有的生产者和消费者互斥使用top指针; 同步信号量:full=0 LP: 生产一个产品; Buffer[top]=item; top=top+1 Goto LP; P(mutex); V(mutex); V(full); LC: P(full); item =Buffer[top]; top=top-1; 消费一个产品; P(mutex); V(mutex); Goto Lc; Buffer top 2.读者-写者问题 m个读者,n个写者,读者可以同时读,读写不能同时进行,写写不能同时进行 今晚有课 明天放假 后天停水 Reading Certainly! May I Read? May I Write? No!! 今晚有课 明天放假 后天停水 元旦 Writing May I Read? May I Write? 进入 读 离开 No!! 进入 写 离开 No!! 如何解决同步与互斥? Readcount=0;mutextr=1; Mutexw=1; 读者: P(mutextr); 读; Readcount=readcount+1; if(readcount==0) P(mutexw); V(mutexr); Readcount=readcount-1; P(mutextr); if(readcount==0) V(mutexw); V(mutexr); 走; 写者: P(mutexw); 写; V(mutexw); 1. I-C-P问题 I是输入进程负责输入数据,C是计算进程,负责进行计算;P是打印进程负责打印结果;Buffer1大小为m ,被I与C共享; Buffer2大小为n,被 C与P共享;buffer1和buffer2均为队列,有界。 四、同步互斥问题实例 2.产品配套问题 A产品和B产品是配套产品 ,要求: nA-nB≤y ,nB-nA≤x ,开始时:A和B数量均为0。如何实现A,B产品的生产过程。 几个信号量?初值分别为多少? 几个同步?几个互斥? Sa Sb =y =x A 产品 P(Sa); 生产一个A; V(Sb); P(Sb); 生产一个B; V(Sa); 开始时:A已有m个,B已有n个。怎么办? 3.吃水果 桌上有一空盘子,允许存放一只水果,爸爸可向盘子中放苹果或橘子,儿子专吃盘子中的橘子,女儿专吃盘子中的苹果,规定当盘子空时一次只能放一只水果,请用P,V操作实现爸爸、儿子、女儿三个并发进程的同步。 几个信号量?初值分别为多少? 几个同步?几个互斥? 爸爸 我要橘子 女儿 我要苹果 三个进程互斥使用一个包含N(N0)个单元的缓冲区,P1每次用produce()生成一个正整数并用put()送入缓冲区的某一空单元中;P2每次用getodd()从该缓冲区中取出一个奇数并用countodd()统计奇数个数; P3每次用geteven()从缓冲区中取出一个偶数并用counteven()统计偶数个数;请用信号量机制实现三个进程的同步与互斥,并说明所定义的信号量的含义, 3.7进程通信 一、 引入 进程通信:在进程间传输数据。 根据通信内容分类: 典型实例:终端控制进程和

文档评论(0)

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

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

1亿VIP精品文档

相关文档