为什么会有进程间、互斥、同步、通信

多个进程共同配合处理一件事情,才会用到进程间通信。不然,进程间本身就是独立的,也不需要有什么沟通。

进程间会存在什么问题

就是因为进程是独立的,又要合作完成一件事情,所以会有如下问题:

冲突,两个进程同时写一个文件。

进程间协作,要求有先后顺序。如菜鸟驿站,入库和出库是两个进程,就要求有先后顺序。得先入库才能出库;出库后才能有空间进行入库。

进程间通信,为了实现大量的数据通信。

如何解决上述问题

总结来说,进程间存在两种关系:竞争、协作。

进程间互斥、同步、通信,都是为了解决这两种关系而存在的。

为了解决进程间竞争关系(间接制约关系),引入进程互斥;

为了解决进程间松散的协作关系(直接制约关系),引入进程同步;

为了解决进程间紧密的协作关系,引入进程通信(IPC)。

本质关系

互斥是一种特殊的同步,同步是一种特殊的通信。

同步:信号量。只能传递信号,没有传递数据的能力。

通信:主要指大量数据交换

IPC

  1. 信号量(同步)
  2. 消息队列
  3. 共享内存
  4. 匿名管道
  5. 有名管道
  6. socket
  7. 文件

IPC

IPC(进程间通信)——剖析

参考

进程的同步、互斥、通信的区别,进程与线程同步的区别