共享内存和消息传递的优缺点

进程间通信(InterProcess Communication,IPC)

  1. 低级进程通信:互斥和同步(交换的信息量较少且效率较低)
  2. 高级进程通信,

    • 共享存储器系统(通过Kernel直接在物理空间上开辟的一块物理内存)
    • 管道通信系统(可以阅读:https://www.usna.edu/Users/cs...)。管道其实就是一个文件,分为有名管道(一般的文件都有名字)和无名管道(为了解决进程之间访问文件带来的干扰[比如文件的权限],以及通过文件名检索文件也需要大量时间,所以创造了无名管道)。但管道与普通的文件不同,1.由kernel进行管理管道的读写并发问题 2.通信过程中的数据不会被写入disk,而是缓存在内存中,从而提高效率。管道是半双工的,单向的,写方永远是写方,读方永远是读方。写进程会将缓冲区写满,读进程才能从缓冲区中读数据。
    • 消息传递系统(直接通信:将信息交到对方手中,间接通信:借助Kernel将信息进行交换,如电子邮件)

    Shared Memory and Message passing 优缺点:

    参考https://www.tutorialspoint.co...

    Shared Memory

    • 优点

      通信速度比较快。因为*直接访问内存,那么内存的访问速度是很快的、*不需要借助第三方的帮助

    • 缺点

      实现比较复杂,并行率低。因为需要人为的去控制并发带来的问题。

    共享内存和消息传递的优缺点_第1张图片

    Message passing

    • 优点

      与上面相反,实现简单,能够实现多个进程的并发。因为这种模式下只需要将信息传递给对方进程的消息队列中即可。(其中一种就是借助kernel当做信使,传递到对方的队列中)

    • 缺点

      通信速率较低。正如上面所说,需要系统调用来使kernel帮自己工作,以及kernel连接消息队列时都需要比较多的时间。所以速率较低。

      共享内存和消息传递的优缺点_第2张图片

你可能感兴趣的:(进程间通信)