进程间通信
文章目录
【注意】最后更新于 October 25, 2022,文中内容可能已过时,请谨慎使用。
进程间通信
背景:
之前的程序是直接操作物理内存的,但这样会有几个问题
- 物理内存有限,如果内存不够用了,操作系统会把程序暂时写入到硬盘中,硬盘和内存来回读写,效率不高
- 进程A可能会恶意修改进程B内存上的数据
后来有了虚拟地址,操作系统将程序的虚拟地址与物理内存进行映射,这样每个进程之间互相不干扰
但是这样就无法进行进程间的通信了,这要有操作系统来实现,操作系统提供一个缓冲区,进程A,B通过操作这个缓冲区实现通信
linux中进程管理的方式
- 管道 [匿名管道,命名管道FIFO] unix IPC posix mkfifo(单个机器上具有血缘关系的进程间通信使用)
- 中断信号[只用于进程间事件通知]
- system v IPC 标准提供的进程间通信 [消息队列,信号量,共享内存] (posix IPC 同样实现,PHP只实现了system V的)
- socket stream通信,可以实现跨机器间进程通信