第4章进程同步与通信2.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
4.6 进程通信(communication) 进程通信指的是进程之间的信息交换; 前面讲过的进程之间的互斥与同步也可以看做是进程之间的一种通信,但它们交换的信息量较少。这里所说的进程之间的通信,指的是进程之间交换较多信息(数据)这样一种情况; 进程通信有三种主要方式,即:共享存储区通信;消息传递通信;管道(共享文件)通信; 共享存储区通信指的是进程之间通过共享变量或数据结构进行通信,这种通信要处理好互斥进入的问题; 消息传递通信又分直接和间接两种形式,“直接”是进程之间直接发送消息进行通信;“间接”是进程之间通过“信箱”进行通信; 管道通信是通过文件系统的管道文件(pipe)进行通信。 4。6。1 消息缓冲通信 消息缓冲通信是消息传递通信中的直接通信方式的一种实现。系统通过消息缓冲区和两条通信原语Send及Receive构建进程之间的一种直接通信机制; 为了实现消息通信,发送进程应先在自己的工作区中设置一个发送区,把欲发送的消息填入其中,然后再用发送原语将其发送出去。接收进程则调用接收原语从自己的消息缓冲队列中摘下一个消息,并将其内容复制到自己的消息接收区内。 消息缓冲通信中的数据结构 消息缓冲区的数据结构如下: struct message { sender; 发送者进程标识符; size; 消息长度; text; 消息正文; next; 指向下一个消息缓冲区的指针; } 在PCB中还应增设 struct PCB { ┇ mq; 消息队列队首指针; mutex;消息队列互斥信号量; Sm; 消息队列资源信号量; ┇ } 发送原语描述 void send(a)/*a为发送区首址*/ { 向系统申请一个消息缓冲区buffer; 将发送区a中的消息复制到buffer中; 获得接收进程的内部标识符id; P(mutex); 把消息缓冲区buffer插入id的消息队列上; V(mutex); V(Sm); } 接收原语描述 void receive(b) /*b为接收区首址*/ { P(Sm); P(mutex); 将消息队列中的第一个消息移出; V(mutex); 将消息复制到接收区b; } 消息缓冲通信示意图 问题讨论 1,这是生产者—消费者问题的实例; 2,这是多对一单向通信机制; 为什么要使用信号量Sm? 6。6。2 信箱通信 信箱通信是消息传递通信中的间接通信方式,进程之间通过共享一个数据结构实体--信箱进行通信; 信箱是一种可以存放“信件”的数据结构,逻辑上分成信箱头和信箱体两部分: 信箱头中存放有关信箱的描述; 信箱体由若干格子组成,每格存放一封信件,格子的数目和大小在创建信箱时确定。 4。6。3 共享文件通信 用于进程通信的共享文件通常称为管道(pipe)文件,使用管道文件通信时,基本上采用文件系统的原有机制实现,包括文件的创建、打开、关闭、读写等; 管道通信机制应提供以下三方面的协调能力: 互斥:诸进程应互斥地读写管道文件; 同步:对管道空、满情况的协调处理; 存在:发送者和接收者都能以一定的方式了解对方是否存在,若一方不存在,就不必发送或接收信息。 习题 P79:1,2,5,6,7,9,13,15,18,19 UNIX的进程同步与通信P256 UNIX的早期版本中,为进程的同步与通信提供了: 软中断信号 管道机制 在UNIX SYSTEM Ⅴ中,推出了新的进程通信机构IPC: 消息机制 共享存储区机制 信号量机制 软中断信号 软中断信号(简称信号)是一种实现进程间简单通信的设施,用于通知对方发生了异常事件。 UNIX SYSTEM Ⅴ中,共有19个软中断信号。 软中断是对硬件中断的一种模拟,接收进程在收到软中断信号后,将按照事先的规定去执行一个软中断处理程序。 软中断处理程序必须等到接收进程执行时才能生效。 信号的发送 信号的发送是指由发送进程把信号发送到指定进程信号域的某一位上。 如果目标进程正在一个可被中断的优先级上睡眠,核心便将它唤醒,发送过程就此结束。 一个进程可能在其信号域中有多个位被置位,代表有多种类型的信号到达,但对于一类信号,进程却只能记住其中的一个。 发送信号 系统调用kill向一个进程或一组进程发送一个信号。该系统调用的语法格式如下: int ki

文档评论(0)

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

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

1亿VIP精品文档

相关文档