进程间通信

进程间通信确保了不同进程间的协作,主要包括共享存储、管道通信和消息传递。共享存储通过共享内存空间实现,分为数据结构共享和存储区共享。管道通信提供半双工通道,数据在固定大小的缓冲区中传输。消息传递则以格式化消息为单位,通过发送/接收原语进行数据交换,包括直接和间接通信方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

进程间通信方式

在这里插入图片描述在计算机中,每个进程都有自己独立的内存地址空间,其他进程并不能直接访问属于某个进程的地址空间,是为了确保系统数据的安全性。
但举个例子,我们使用图片时,点击分享按钮,可以通过微信将其分享出去,因此此时就需要实现进程之间的相互通信。

进程之间的相互通信方式分为三种:

  1. 共享存储
  2. 管道通信
  3. 消息传递

1. 共享存储

一个进程是不能去访问另一个进程的私有空间的,因此操作系统会为这两个进程提供一块共享内存空间。但是在使用这块共享空间时,是进程互斥的,即当一个进程访问完了出来以后,另一个进程才能访问,修改。
共享存储又有两种方式,一种是基于数据结构的共享,比如在共享空间里只能存放一个长度为10的数组,这种共享方式速度慢,限制多,是一种低级通信的方式。另一种是基于存储区的共享,在内存中划出一块共享存储区,数据的形式、存放的位置都由进程控制,而不是操作系统,这种共享方式速度更快,是一种高级通信的方式。

在这里插入图片描述

2.管道通信

“管道”是指用于连接读写进程的一个共享文件,其实就是在内存中开辟一个大小固定的缓冲区,比如Linux系统中的管道大概为4KB。
数据通过管道来进行传输,但需要注意管道通信是一种半双工的通信方式,即在同一个时间只能进行单向的数据传输。如果需要同时进行双向传输的话,就需要建立两条管道。管道没有被写完时,读进程是被阻塞

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值