Linux 下传统的进程间通信原理

Linux 下传统的进程间通信原理


来源网络

在Linux中跨进程通信涉及到几个基本的概念

  • 进程间隔离
  • 进程空间划分:用户空间(User Space)/内核空间(Kernel Space)
  • 系统调用:用户态/内核态

进程间隔离,进程与进程间内存是不共享的。进程A想要直接访问进程B的数据是行不通,要想进程A和进程B之间的数据共享,就涉及到IPC通信。

来源网络
  1. 消息发送方将要发送的数据存放在内存缓存区中,通过系统调用进入内核态。

  2. 然后内核程序在内核空间分配内存,开辟一块内核缓存区,调用 copyfromuser() 函数将数据从用户空间的内存缓存区拷贝到内核空间的内核缓存区中。

  3. 同样的,接收方进程在接收数据时在自己的用户空间开辟一块内存缓存区,然后内核程序调用 copytouser() 函数将数据从内核缓存区拷贝到接收进程的内存缓存区。这样数据发送方进程和数据接收方进程就完成了一次数据传输,我们称完成了一次进程间通信。

你可能感兴趣的:(Linux 下传统的进程间通信原理)