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

第2章进程管理.ppt

  1. 1、本文档共168页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
(2) PCB中有关通信的数据项:消息的管理--解决多个消息的组织,何时发送,何时接收完。 修改/扩充pcb: 原内容 Mq 消息队列队首指针 Mutex 消息队列互斥信号量 Sm 消息队列资源信号量 2.6 进 程 通 信 根据a.size申请缓冲区I; 将发送区a中的信息复制缓冲区i之中; 获得接收进程内部识得j; wait(j.mutex) 将消息缓冲区i插入j的消息队列; signal(j.mutex) signal(j.sm) 2. 通信原语: (1) 发送原语描述:send(receiver,a):a=队首 2.6 进 程 通 信 (2) 接收原语描述:receive(b): 队首=b 获取接收进程的内部名j; wait(j.sm); wait(j.mutex); 将消息队队首i移出; signal(j.mutex); 把消息缓冲区i之中的消息复制到b; 释放消息缓冲区i; 注意:同步问题 2.6 进 程 通 信 图 2 - 12 消息缓冲通信 2.6 进 程 通 信 发送原语描述如下: procedure send(receiver, a) begin getbuf(a.size,i); 根据a.size申请缓冲区; i.sender∶ =a.sender; i.size∶ =a.size; 将发送区a中的信息复制到消息缓冲区之中; i.text∶ =a.text; i.next∶ =0; getid(PCB set, receiver.j); 获得接收进程内部标识符; wait(j.mutex); insert(j.mq, i); 将消息缓冲区插入消息队列; signal(j.mutex); signal(j.sm); end 2.6 进 程 通 信 接收原语描述如下: procedure receive(b) begin j∶ =internal name; j为接收进程内部的标识符; wait(j.sm); wait(j.mutex); remove(j.mq, i); 将消息队列中第一个消息移出; signal(j.mutex); b.sender∶ =i.sender; 将消息缓冲区i中的信息复制到接收区b; b.size∶ =i.size; b.text∶ =i.text; end 2.6 进 程 通 信 三、 读者-写者问题 对数据的操作: 读者 写者 1. 利用记录型信号量解决读者-写者问题 读 写、读/写 共享数据 制约:写者不能和任何进程(读、写)同时访问共享对象; 读者可以和其他读者同时访问共享对象。 reader:repeat P(mutex) read; V(mutex) Until false writer:repeat P(mutex) Write; V(mutex) Until false 编程: 为共享数据设互斥信号量mutex=1 // 关写也关读 // 关写也关读 三、 读者-写者问题 修改reader: reader: repeat P(mutex) read; V(mutex) until false 第一个读者进时关门 以后读者直接进来 最后一个读者离开时开门 非最后一个则直接离去 if( readcout=1)P(mutex) readcount:=readcount

文档评论(0)

希望之星 + 关注
实名认证
内容提供者

我是一名原创力文库的爱好者!从事自由职业!

1亿VIP精品文档

相关文档