小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
进程的通信
进程之间可以通过信息交换的方式通信。根据信息交换的方式不同,进程通信分为:
- 共享存储
- 信息传递
- 管道通信
注:如果需要传递的信息很小,一个布尔值即可表示,那可以通过PV操作来实现
共享存储
共享存储分为基于数据结构的共享存储和基于存储区的共享存储,其中基于数据结构的共享存储由于确定了数据结构,比如一个结构体,一个数组,因此其实本质上和一个多个布尔值的PV操作区别不大。
而基于存储区的共享存储更加灵活,不再受限于数据结构,信息交换会更加的方便
信息传递
- 以格式化消息Message为单位,操作系统提供发送消息接收消息两种原语实现数据交换
- 通过消息缓冲队列直接通信
- 通过信箱间接通信
管道通信(适用于大量数据的通信)
- 管道:用于连接一个读进程和一个写进程以实现它们之间通信的共享文件,又名pipe文件
- 字符流,半双工【从管道读写数据是一次性操作】
- 管道可以克服文件进行通信的管道的大小限制以及读的太快了——管道满了写被阻塞管道空了读被阻塞