操作系统之进程通信

1. 知识总览

在这里插入图片描述
进程间通信方式

三大类: 共享存储,消息传递,管道通信(内存缓冲区)

2.什么是进程通信

在这里插入图片描述
各进程的内存空间是相互独立的,一个进程不能访问另一个进程的内存空间。

但是进程间的相互通信是不可避免的

方案一 共享存储

为两个进程设立一个共享存储区,两个进程需要互斥(通过PV操作)的访问共享空间。

共享存储分为 基于数据结构 和 基于存储区 两种

基于数据结构:只能放固定数据结构的数据,速度慢,限制多,是一种低级通信方式

基于存储区:数据形式由进程控制,是高级通信方式
在这里插入图片描述

方案二 管道通信

管道通信只能使用半双工,一段时间内只能单向通信。管道就是内存中的缓冲区,缓存区未满时不能读数据,缓冲区未空不能写数据。当写入方将缓冲区写满后,读入方才能开始读,只有读入方将缓冲区读空以后,缓冲区才能重新被写入数据。

管道满时,写进程的write()调用将被阻塞,管道空时,读进程的read()调用将被阻塞

对于管道来说,两个读进程之间,两个写进程之间,读进程与写进程之间都是互斥的。

两个写进程可能会覆盖写入以及乱序写入

由于管道中的数据在读进程读取之后便丢失了(这与文件不同,文件读取不改变文件里的值),因此两个读进程一起读的话可能会导致错误(想读的已经被读走了,只能读不该读的了)
在这里插入图片描述
方案三 消息传递

进程间通过 “发送消息”、“接受消息”这两个 原语 来进行数据交换

类似与邮件,有一个消息信箱作为进程间消息的中转站,进程要先将消息发送到信箱中去,进程收到消息后将消息挂到消息队列上

消息类似于网络报文,分为消息头和消息体两部分。消息头包括 发送进程id,接受进程id,消息类型,消息长度等(和计网完全类似)
在这里插入图片描述
注意:

共享存储方式中,两个进程必须互斥的访问共享空间

管道通信方式,一个管道只能实现半双工通信,要想实现全双工通信,需要设置两个管道(两个缓冲区)

3. 总结

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值