进程间互斥、同步、通信方式
为什么会有进程间、互斥、同步、通信
多个进程共同配合处理一件事情,才会用到进程间通信。不然,进程间本身就是独立的,也不需要有什么沟通。
进程间会存在什么问题
就是因为进程是独立的,又要合作完成一件事情,所以会有如下问题:
冲突,两个进程同时写一个文件。
进程间协作,要求有先后顺序。如菜鸟驿站,入库和出库是两个进程,就要求有先后顺序。得先入库才能出库;出库后才能有空间进行入库。
进程间通信,为了实现大量的数据通信。
如何解决上述问题
总结来说,进程间存在两种关系:竞争、协作。
进程间互斥、同步、通信,都是为了解决这两种关系而存在的。
为了解决进程间竞争关系(间接制约关系),引入进程互斥;
为了解决进程间松散的协作关系(直接制约关系),引入进程同步;
为了解决进程间紧密的协作关系,引入进程通信(IPC)。
本质关系
互斥是一种特殊的同步,同步是一种特殊的通信。
同步:信号量。只能传递信号,没有传递数据的能力。
通信:主要指大量数据交换
IPC
- 信号量(同步)
- 消息队列
- 共享内存
- 匿名管道
- 有名管道
- socket
- 文件