进程间通信
每个进程的用户地址空间都是独立的,一般而言不能相互访问,所以进程通过内核进行通信。
管道通信
管道就是内核里的一串缓存,管道传输数据是无格式的流且大小受限,通讯数据遵守先进先出原则。
匿名管道的通信范围是父子进程,命名管道的范围是任意两个进程。
消息队列
管道效率低不适合频繁地交换数据。
消息队列是保存在内核中的消息链表。
发送的数据会被分成一个一个的数据单元,即消息体(数据块)。消息的发送方和接收方要先约定好消息体的数据类型。消息队列的生命周期跟随内核,如果没有释放消息队列或者关闭操作系统,消息队列将一直存在。而管道是跟随进程的。
消息队列的缺点:消息不及时,附件大小也有限制。
共享内存
拿出一块虚拟内存来,映射到相同的物理地址。