进程间通信方式
进程间通信方式有:共享内存,信号,管道,消息队列,有名管道,信号量
管道:管道存在于内存中,当创建管道时,系统分配了一个页面作为缓冲区,进程在对这个缓冲区进行读写,以此来完成通信。它是单向数据传递的,只能从一方流向另一方,只用于有亲缘关系的进程,比如父子进程或者兄弟进程,它没有名字且有大小限制,它是一个没有格式的流,所以传输双方要规定好数据通信的格式。
有名管道:与管道不同的是它有名字,它提供了一个路径名与之关联,有自己的传输格式,这样就解除了只有亲缘进程才能访问的局限性。
共享内存(最快的进程间通信方式):就是分配一块能被其他进程所访问的一块内存空间。共享内存让不同进程看到同一份资源的方式 : 在物理内存当中申请一块内存空间,然后将这块内存空间分别与需要进行进程间通信的进程的页表之间建立映射,再在各进程的虚拟地址空间当中开辟空间并将虚拟地址填充到各自页表的对应位置,使得虚拟地址和物理地址之间建立起对应关系,至此这些进程便看到了同一份物理内存,这块物理内存就叫做共享内存。
消息队列 :消息队列实际上就是在系统当中创建了一个队列,队列当中的每个成员都是一个数据块,这些数据块都由类型和信息两部分构成,两个互相通信的进程通过某种方式看到同一个消息队列,这两个进程向对方发数据时,都在消息队列的队尾添加数据块,这两个进程获取数据块时,都在消息队列的队头取数据块。其中消息队列当中的某一个数据块是由谁发送给谁的,取决于数据块的类型
和共享内存一样,消息队列的资源也必须自行删除,否则不会自动清除。
信号量:信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。信号是进程间通信机制中唯一的异步通信机制,可以看作是异步通知,通知接收信号的进程有哪些事情发生了。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程使用 AI 从 0 到 1 写了个小工具
· 快收藏!一个技巧从此不再搞混缓存穿透和缓存击穿
· AI 插件第二弹,更强更好用
· Blazor Hybrid适配到HarmonyOS系统
· 支付宝 IoT 设备入门宝典(下)设备经营篇