【考研计算机专业课】武汉大学操作系统PPT课件 第3章 进程同步与通信2.ppt

【考研计算机专业课】武汉大学操作系统PPT课件 第3章 进程同步与通信2.ppt

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

3.5 进程通信 进程通信是指进程之间的信息交换。 进程互斥与同步交换的信息量较少且效率较低,因此称这两种进程通信方式为低级进程通信方式,相应地也将P、V原语称为两条低级进程通信原语。 高级进程通信方式是指进程之间以较高的效率传送大量数据。 3.5.1 进程通信的类型 高级进程通信方式可分为三大类: 共享存储器系统 消息传递系统 管道通信系统或共享文件系统 共享存储器系统 相互通信的进程共享某些数据结构或共享存储区。 基于共享数据结构的通信方式:诸进程通过公用某些数据结构交换信息。如生产者-消费者问题。 基于共享存储区的通信方式:在存储器中划出一块共享存储区,诸进程可通过对共享存储区进行读或写来实现通信。包括建立共享存储区、附接及断接。 消息传递系统 在消息传递系统中,进程间的数据交换以消息为单位,程序员直接利用系统提供的一组通信命令(原语)来实现通信。 消息传递系统因其实现方式不同可分为: 直接通信方式:发送进程将消息发送到接收进程,并将其挂在接收进程的消息队列上;接收进程从消息队列上取消息。 间接通信方式:发送进程将消息发送到信箱,接收进程从信箱中取消息。 管道(共享文件)通信 管道(共享文件)通过连接读进程和写进程的共享文件来实现读写进程之间通信。 3.5.2 消息传递系统 消息传递系统是实现进程通信的常用方式,这种通信方式既可以实现进程间的信息交换,也可以实现进程间的同步。 1. 消息缓冲通信 消息缓冲通信是直接通信方式的一种实现。 消息缓冲队列通信机制中的数据结构 所谓消息是指一组信息,消息缓冲区的数据结构如下: struct message { sender; 发送者进程标识符 size; 消息长度 text; 消息正文 next; 指向下一个消息缓冲区的指针 } 在PCB中还应增加 struct PCB { ┇ mq;消息队列队首指针 mutex;消息队列互斥信号量 sm;消息队列资源信号量 ┇ } 消息缓冲通信的实现思想 为了实现消息通信,发送进程应先在自己的工作区中设置一个发送区,把欲发送的消息填入其中,然后再用发送原语将其发送出去。 接收进程调用接收原语从自己的消息缓冲队列中摘下第一个消息,并将其内容复制到自己的消息接收区内。 两个进程进行通信的过程 发送原语描述 void send(receiver,a)receiver为接收者标识号,a为发送区首址 { 向系统申请一个消息缓冲区i; 将发送区a中的消息复制到i中; 获得接收进程的内部标识j; P(mutex); 把消息插入j的消息队列上; V(mutex); V(sm); } 接收原语描述 void receive(b)b为接收区首址 { 获得接收进程内部标识j; P(sm); P(mutex); 将消息队列中的第一个消息移出; V(mutex); 将消息复制到接收区b; } 2.信箱通信 信箱通信方式中,进程之间通信需要通过共享数据结构实体--信箱来进行。 信箱是一种数据结构,其中存放信件。 信箱逻辑上分成信箱头和信箱体两部分。 信箱头中存放有关信箱的描述。 信箱体由若干格子组成,每格存放一个信件,格子的数目和大小在创建信箱时确定。 信箱通信原语 信箱通信原语包括: 信箱的创建和撤消: 消息的发送和接收: Send(mailbox,message); Receive(mailbox,message); 消息通信中的同步问题1 进程间的消息通信存在同步关系 对于发送进程来说,它在执行发送原语后有两种可能选择: 发送进程阻塞,直到这个消息被接收进程接收到,这种发送称为阻塞发送。 发送进程不阻塞,继续执行,这种发送称为非阻塞发送。 消息通信中的同步问题2 对于一个接收进程来说,在执行接收原语后也有两种可能选择: 如果一个消息在接收原语执行之前已经发送,则该消息被接收进程接收,接收进程继续执行。 如果没有正在等待的消息,则该进程阻塞直到有消息到达;或者该进程继续执行,放弃接收的努力。前者称为阻塞接收,后者称为非阻塞接收。 消息通信中的同步问题3 根据发送进程和接收进程采取方式的不同,通常有三种常用的组合方式: 非阻塞发送、阻塞接收。 非阻塞发送、非阻塞接收。 阻塞发送,阻塞接收。 3.管

您可能关注的文档

文档评论(0)

189****1013 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档