进程A和进程B都处于用户态能相互通信吗?

答案:不能,因为进程A和进程B的虚拟地址空间(0-3GB)需要进行地址映射,映射后进程A和进程B访问的物理内存不是同一块内存,所以进程A和进程B无法在用户态通信。

既然用户态无法通信,所以我们只能想另外的办法,我们把进程切换到内核态,看一下进程A和进程B是否能通信。

内核地址空间是直接映射,所以进程A和进程B能通过相同的虚拟地址空间访问物理内存,进程A和进程B实现通信就有了理论依据。

因为直接映射的这个机制,所有的进程的内核空间都指向同一块物理内存,所有进程共享内核代码段和数据段。

进程间通信的本质:进程之间能够访问内核空间相同的物理内存。

你可能感兴趣的:(后端,服务器)