进程间通信(InterProcess Communication,IPC)
- 低级进程通信:互斥和同步(交换的信息量较少且效率较低)
高级进程通信,
- 共享存储器系统(通过Kernel直接在物理空间上开辟的一块物理内存)
- 管道通信系统(可以阅读:https://www.usna.edu/Users/cs...)。管道其实就是一个文件,分为有名管道(一般的文件都有名字)和无名管道(为了解决进程之间访问文件带来的干扰[比如文件的权限],以及通过文件名检索文件也需要大量时间,所以创造了无名管道)。但管道与普通的文件不同,1.由kernel进行管理管道的读写并发问题 2.通信过程中的数据不会被写入disk,而是缓存在内存中,从而提高效率。管道是半双工的,单向的,写方永远是写方,读方永远是读方。写进程会将缓冲区写满,读进程才能从缓冲区中读数据。
- 消息传递系统(直接通信:将信息交到对方手中,间接通信:借助Kernel将信息进行交换,如电子邮件)
Shared Memory and Message passing 优缺点:
参考https://www.tutorialspoint.co...
Shared Memory
优点
通信速度比较快。因为*直接访问内存,那么内存的访问速度是很快的、*不需要借助第三方的帮助
缺点
实现比较复杂,并行率低。因为需要人为的去控制并发带来的问题。
Message passing
优点
与上面相反,实现简单,能够实现多个进程的并发。因为这种模式下只需要将信息传递给对方进程的消息队列中即可。(其中一种就是借助kernel当做信使,传递到对方的队列中)
缺点
通信速率较低。正如上面所说,需要系统调用来使kernel帮自己工作,以及kernel连接消息队列时都需要比较多的时间。所以速率较低。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。