第3章进程和处理机管理解析.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3.1 进程的基本概念 例 程序的并发执行 设程序A 执行 a1,a2,a3; 程序B 执行 b1,b2,b3. 若在CPU上执行是 a1 a2 a3 b1 b2 b3 ,则称 程序A、B是顺序执行的; 若在CPU上执行是 a1 b1 a2 b2 a3 b3 ,则称 程序A、B是并发执行的; 飞机订票系统例子 设某航班票数为x,有两个终端T1(x)、T2(x)同时售票。 则 COBEGIN Process T1(x); Process T2(x); COEND 飞机订票系统例子 Process T1(x); Process T2(x); { { ① Read(x); ② Read(x); ③ if x≥1 then x=x-1; ④ if x≥1 thenx=x-1; ⑤ write(x); ⑥ write(x); } } 设某时刻x=1,按①②③④⑤⑥执行,则导致一张票售了两次。 T1:read(x) x=x-1 write(x) X=1 x=0 x=0 ① ② ③ ④ ⑤ ⑥ t T2: read(x) x=x-1 write(x) X=1 x=0 x=0 3.4 进程间的同步与互斥 设S为信号量,P操作的动作定义如下: P(S) : 将S减1; 若S<0 ,则将调用P(S)的进程置为等待状态; 若S≥0 ,则进程继续。 3.4 进程间的同步与互斥 设S为信号量,V操作的动作定义如下: V(S) : 将S加1; 若S≤0 ,则唤醒一个等待S的进程; 若S>0 ,则进程继续。 3.4 进程间的同步与互斥 PV操作的物理意义 P操作代表申请使用资源的操作; V操作代表释放归还资源的操作。 当S>0时,S值表示可使用资源的数目。 当S=0时,表示无资源可使用,也无进程等待使用资源。 当S<0时,∣S∣值表示等待使用资源的进程数目。 3.4 进程间的同步与互斥 注意: 对于两个并发进程互斥,s的取值仅为1、0、-1 若s=1,则表示没有进程进入临界区; 若s=0,则表示有一个进程进入了临界区; 若s=-1,则表示有一个进程进入临界区另一个等待进入。 3.4 进程间的同步与互斥 设公用信号量s,初值为1,则: Process T1(x); Process T2(x); Begin Begin P(s); p(s); Read(x); Read(x); if x≥1 then x=x-1; if x≥1 then x=x-1; write(x); write(x); v(s); v(s); End End 3.4 进程间的同步与互斥 有m个生产者和k个消费者共享能存放n件产品的缓冲区。 P1 c1 P2 1 2 … n c2 ┊ ┊ pm ck 解决: 为生产者设置私用信号量empty,初值为n,表示最多可放n件产品; 为消费者设置私用信号量full,初值为0,表示缓冲区有0件产品; 再设置公用信号量(互斥信号灯)mutex ,初值为1,表示缓冲区可用。 使用信号灯解决消费者问题的代码 Main( ) {semaphore: s1,s2,mutex ; empty:=n; full:=0;mutex=1; COBEGIN process 生产者;   process 消费者; COEND } 使用信号灯解决消费者问题的代码 Process 生

文档评论(0)

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

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

1亿VIP精品文档

相关文档