进程通信:进程之间的信息交换,
各个进程的内存空间相互独立,为保证安全,一个进程不能直接访问另一个进程的地址空间
一、共享存储
![](https://i-blog.csdnimg.cn/blog_migrate/16a8806f15f224167d08673195c1f7e2.png)
两个进程对共享空间访问必须是互斥的,互斥访问通过操作系统提供的工具实现
基于数据结构的共享:速度慢,限制多(低级共享)
基于 存储区的共享:速度快(高级共享)
二、管道通信
![](https://i-blog.csdnimg.cn/blog_migrate/a80359021584035181c97558dacf4407.png)
1、管道:用于连接一个读进程和写进程实现它们之间通信的共享文件
2、管道通信只采用半双工通信:某一时间只能实现单向传输,设置两个管道才能实现双向同时通信
各个进程要互斥地访问管道
3、数据以字符流的形式写入管道,管道写满,写进程会被阻塞;管道变空,读进程会阻塞
4、如果没写完不允许读,没读完不允许写,数据一旦被读出就会被抛弃
三、消息传递
进程间交换以格式化的消息为单位,以操作系统的提供的“发出消息/接收消息”原语进行数据交换
![](https://i-blog.csdnimg.cn/blog_migrate/d580295883a938c2e8f28f2ef344422c.png)
直接通信方式:消息直接挂在接收进程消息的缓冲队列上
间接通信方式:消息要先发送到中间实体(信箱,也叫信箱通信方式)