进程通信第三章3.2.pptVIP

  • 16
  • 0
  • 约1.53千字
  • 约 15页
  • 2017-11-10 发布于湖北
  • 举报
进程通信第三章3.2

* * 3.2 进程通信 3.2.1 进程通信的类型 3.2.2 直接通信方式 3.2.1 进程通信的类型 一、共享存贮器系统 1.基于共享数据结构的通信方式: produce-consume中的缓冲区,低效,不透明。 适于少量通信。 2.基于共享存储区的通信方式: 系统提供:共享存储区。 通信过程: (1)向系统申请一个或多个分区 (2)获得分区获后即可读/写. 特点:高效,速度快。 二、消息传递系统 信息单位:消息(报文) 是目前的主要通信方式,分为直接通信方式、间接通信方式 三、管道通信 管道:连接一个读进程和一个写进程,以实现它们 之间通信的共享文件,又称pipe文件。 功能:大量的数据发收。 注意:(1)UNIX系统的管道通信 (2)以生产者—消费者方式通信 (3)以文件为基础,实质是以外存来进行数 据通信。 3.2.1 进程通信的类型 3.2.2 直接通信方式 一、直接通信方式的基本思想 二、实例—消息缓冲队列通信机制 一、直接通信方式的基本思想 3.2.2 直接通信方式 根据生产者—消费者关系原理,利用内存的公用消息缓冲池实现进程之间的信息交换。 发送者进程直接将消息送入内存公用消息缓冲池,并将它挂接在接收者进程的消息缓冲队列上,接收进程从消息缓冲队列中取走消息。 二、实例—消息缓冲队列通信机制 1、通信描述 原语描述 i 1、通信描述 i 原语描述 二、实例—消息缓冲队列通信机制 sender : A size : 5 text : Hello 1、通信描述 i 二、实例—消息缓冲队列通信机制 二、实例—消息缓冲队列通信机制 3.2.2 直接通信方式 2、发送、接收原语 发送原语--send(receiver,a) send(receiver,a)原语用来发送消息, receiver 是接收者进程,a是发送区起始地址; 接收原语-- receive(b) receive(b)原语用来接收消息, b是接收区首地址; send(receiver,a)原语描述: 申请一个空消息缓冲块 把以a为首址的消息写到空缓冲块中 把消息缓冲块链入接收者的消息缓冲队列中 receive(b)原语描述: 从消息缓冲队列中取一条消息 写到以b为首址的接受区 释放消息缓冲块 二、实例—消息缓冲队列通信机制 3.2.2 直接通信方式 2、发送、接收原语 通信描述 原语实现 二、实例—消息缓冲队列通信机制 3.2.2 直接通信方式 3、实现 数据结构 消息缓冲块 typedef struct MessageBuffer sender: size: text: next: PCB中有关通信的数据项 mq :消息队列头指针; mutex :消息队列互斥信号量,初值为1; sm 同步信号量,用于消息队列中的消息计数,初值为0; Bufmutex:缓冲池的互斥信号量,初值为1; 消息缓冲通信机制还应包含的内容: Emphead:空缓冲队列头指针; Bufempty:缓冲池的同步信号量,初值为n; 二、实例—消息缓冲队列通信机制 3.2.2 直接通信方式 3、实现 发送、接收原语的类C语言描述

文档评论(0)

1亿VIP精品文档

相关文档