【OS笔记 23】进程通信

一、进程通信是什么

进程通信是指 进程之间的信息交换

协作进程需要一种进程间通信机制(Interprocess Communicatio,IPC)来允许进程相互交互数据与信息。



二、进程通信的类型

1. 共享存储器系统(Shared-Memory System)

在共享存储器系统中,相互通信的进程共享某些数据结构或存储区,然后通过这些空间进行通信。据此,可以将其分为两种类型:

(1)共享数据结构

这种通信方式要求诸进程公用某些数据结构来实现信息交换,非常经典的例子就是生产者—消费者问题中的公共有界缓冲区

这种方式要求信息交换的格式、类型一定,比如每次只能放一个产品、取一个产品,而且操作系统仅提供共享存储器,进程的同步与互斥都需要程序员去实现,

这种方式仅适用于传递少量的数据,通信效率低下,属于低级通信

(2)共享存储区

为了大量传输数据,在内存中划出了一块共享存储区,诸进程可以直接读或写该共享区的内容,来实现信息的交换。(可以想象成一个聊天区)

这种方式属于高级通信

2. 消息传递系统(Message Passing System)

利用系统提供的通信原语,以消息或报文为单位进行信息交换,包括直接/间接通信。

消息的格式: 消息头 + 消息正文(消息头:发送和接收进程名、消息长度、类型等)

进程的同步方式:
在进程之间进行通信时,同样需要进程同步机制,以使诸进程间能协调通信。在完成消息的发送或接收后,有三种情况:
① 发送进程和接收进程均阻塞(用于紧密同步,发送与接收之间无大的时差)
② 发送进程和接收进程均不阻塞
发送进程不阻塞、接收进程阻塞(应用最广,平时发送进程可以一直发送消息,接收进程直到有消息来时才被唤醒)

(1)直接通信方式

发送进程直接把消息发送给目标进程(利用OS提供的发送原语)

直接通信原语:
send ( receiver, message ); // 发送 message 给 receiver
receive ( sender, message ); // 接收 sender 发来的 message

(2)间接通信方式(信箱通信)

发送和接收进程,都通过共享中间实体(称为邮箱)的方式进程消息的发送和接收。

信箱的结构:
信箱头:关于信箱的描述信息,比如信箱标识符、信箱拥有者等
信箱体:由若干个可以存放消息的信箱格组成

在这里插入图片描述

信箱通信原语:
① 邮箱的创建和撤销
② 消息的发送和接收
send ( mailbox, message ); // 将一个消息发送到指定邮箱
receive ( mailbox, message ); // 从指定邮箱中接收一个消息

信箱分为三类:
• 私用信箱(Private Mailbox)
用户进程自己创建的邮箱,作为该进程的一部分,进程结束时也随之消失。只有该进程能从邮箱中读取消息,其他进程只能发送信息到该邮箱。

• 公用信箱(Public Mailbox)
由操作系统创建,提供给所有核准进程使用。这些进程既可以读,也可以写。通常在系统运行期间始终存在。

• 共享信箱(Shared Mailbox)
由某进程创建,同时必须指出共享进程的名字,都可取走发给自己的消息。

通信链路(communicaiton link)
• 显式建立 / 隐式建立(发送原语自动构建)
• 单向通信链路 / 双向通信链路

3. 管道通信(Pipe Communication)

(1)管道
是指用于连接一个读进程和一个写进程 以实现它们之间通信的一个共享文件,又名 pipe 文件。
管道是Unix系统的重要特色之一。

(2)共享过程
发送进程以字符流的形式将大量数据送入管道(也就是向文件中写入数据)
接收进程从管道中接收(读)数据

(3)管道的协调能力(特点)
① 互斥: 同一时刻,只能有一个进程对管道进行操作。
② 同步: 当写入一定数量的数据后,写进程需要睡眠等待,直到读进程取走数据后才能把它唤醒。(保证每一次的数据都能被接收)
③ 确定对方是否存在: 只有确定了对方存在时才能进行通信。
④ 单向: 写进程只能写,读进程只能读。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值