网站大量收购闲置独家精品文档,联系QQ:2885784924

操作系统2002--进程同步与互斥.ppt

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

buffer1 buffer2 输入设备 打印设备 输入进程 计算进程 打印进程 P1 P2 P3 PROCESS calculator begin L1: P(SB); 计算下一个数据 并送入缓冲区; V(SA); goto L1; end; PROCESS printer begin L2: P(SA); 从缓冲区中取出 数据并打印; V(SB); goto L2; end; 同步机制 调用P操作测试消息是否到达 调用V操作发送消息 生产者-消费者问题 简单的生产者、消费者问题(单缓冲区) 定义:整型变量:Buffer,信号量:SP=1, SG=0 PROCESS Producer begin L1: produce a product; P(SP); Buffer := product; V(SG); goto L1 end PROCESS Consumer begin L2: P(SG); Take a product form Buffer; V(SP); goto L2 end 多缓冲区生产者、消费者问题 PROCESS Producer begin L1: produce a product; P(SP); B[k] := product; k := (k + 1) mod n; V(SG); goto L1 end PROCESS Consumer begin L2: P(SG); Take a product form B[t]; t := (t + 1) mod n V(SP); consumer; goto L2 end 定义:整型变量:k = 0, t = 0 整型数组:B[0…n-1] 信号量:SP = n, SG = 0 例子:三个进程R、W1、W2,共享一个缓冲区B,B中最多只能存放一个数。进程R负责不断地向B中存入整数,进程W1、W2分别负责取出B中的奇数和偶数并进行打印。 PROCESS R x: integer; begin L1: {从输入设备中读入 一个数}; x := 读入的数; P(S); B := x; if B=奇数 then V(SO) else V(SE) goto L1; end PROCESS W1 y: integer; begin L2: P(SO); y := B; V(S); {打印y中数}; goto L2; end PROCESS W2 z: integer; begin L3: P(SE); z := B; V(S); {打印z中数}; goto L3; end 定义信号量:S 初值为1 表示初始时缓冲区可用 SO 初值为0 用于向打印奇数的进程发消息 SE 初值为0 用于向打印偶数的进程发消息 四、同步与互斥的混合问题 例子:有m个生产者和r个消费者共享容量为n的缓冲器(m、r、n均大于1)。每个生产者把自己生产的物品存入缓冲区,每个消费者从缓冲区中取出物品去消费。要求用P、V操作对这些生产者和消费者进行正确管理。 定义:整型数组:B[0…n-1] 整型变量:k,t 初值均为0 信号量:S1:初值1 用于生产者放入物品 S2:初值1 用于消费者取出物品 SP:初值n 缓冲区是否可用 SG:初值0 缓冲区里是否有物品 PROCESS Pi begin L1: produce a product; P(SP); P(S1); B[k] := product; k := (k + 1) mod n; V(S1); V(SG); goto L1 end PROCESS Cj begin L2: P(SG); P(S2); take a product from B[t]; t := (t + 1) mod n; V(S2); V(SP); consume; goto L1 end 生产者分别向缓冲区送产品,由S1控制互斥访问。 消费者分别从缓冲区

文档评论(0)

文档精品 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:6203200221000001

1亿VIP精品文档

相关文档