- 1、本文档共91页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
注意 P(mutex)、V(mutex)在同一程序成对出现。而且放于访问临界资源代码前后。 如:p(mutex) reader:=reader+1 V(mutex) 一般信号量P操作、V操作也成对出现,但出现在不同的 进程中。 信号量必须初始化,且其初值不同,其实现过程也有差别。 出现连续两个P操作,先后顺序要注意。 管程解决哲学家进餐问题 Type dining-philosophers=monitor var state:array[0…4] of (thinking,hungry,eating); var self:array[0…4] of condition; Procedure entry pickup(i:0…4) begin state[i]:=hungry; test(i); if state[i] ≠eating then self[i].wait end; Procedure entry putdown(i:0…4) begin state[i]:=thinking; test(i+4 mod 5); test(i+1 mod 5); end; Procedure test(k:0…4) begin if state[k+4 mod 5] ≠ eating and state[k]=hungry and state[k+1 mod 5] ≠ eating then begin state[k]:=eating; self[k].signal; end; end; Begin for i:=0 to 4 do state[i]:=thinking; End; Philosopher i: … dining-philosophers.pickup(i); eating; dining-philosophers.putdown(i); … pickup(i:0…4):若某哲学家处于饥饿,且他的左、右哲学家未进餐时,便允许这位哲学家进餐。否则,执行self(i).wait推迟进餐。 putdown(i:0…4):当哲学家进餐毕,若其左、右的哲学家都在饥饿且都未用餐时,可让他们进餐。 test(i:0…4):测试哲学家是否已具备进餐条件。 管程 VS 进程: 设置目的不同:管程是对共享资源进行管理;进程是资 源分配和执行的基本单位。 数据结构不同:管程定义公用数据结构(队列);进程 定义私有数据结构(PCB)。 存在方式不同:管程是操作系统固有的部分,没有生命 周期;进程有生命周期。 执行方式不同:管程被进程调用,没有并发性;进程具 有并发执行性。 说一说 进程通信 低级通信: 如P、V操作 只能传递简单的信号,不能传递交换大量信息,效率低。 对用户不透明。 高级通信: 利用操作系统提供的一组操作命令,传送数据量大。 对用户透明。 进程通信类型(高级通信) 共享存储器系统(共享数据结构、共享存 储区) 消息传递系统(直接通信、间接通信) 管道通信 消息传递通信的实现方法 直接通信方式 Send(receiver,message); Receive(sender,message); 间接通信方式 信箱体 信箱头 信箱 发送进程 接收进程 管道通信 管道机制的协调能力: 互斥:进程互斥地读、写pipe。 同步:写进程把数据写入pipe后,便去睡眠 等待,直到读进程把数据取走才被唤醒。 对方是否存在:确定对方存在时,才能通信。 pipe 写进程 读进程 消息缓冲队列通信机制(美.Hansan) 消息缓冲区 PCB相关数据项 Type message buffer=record Sender :发送者进程标识符 Size :消息长度 Text :消息正文 Next :指向下一个消息缓冲区的指针 Type processcontrol block=record mq : 消息队列队首指针 mutex:消息队列互斥信号量 sm : 消息队列资源信号量 Text:hello Size:5 Sender:A s
文档评论(0)