本文来梳理下进程间通信的必备知识。
基础概念
并发进程之间的交互必须满足两个基本要求:同步和通信。
并发进程之间的两种关系:竞争与协作。(用互斥解决竞争关系,用同步解决协作关系)
进程同步:指两个以上进程基于某个条件来协调它们之间的活动。(说的简单点,就是为了共同的任务,需要进程排着队,一个个来处理)
进程互斥:指若干个进程要使用同一个共享资源时,在任何时刻只允许一个进程使用,其它的都得等待。
互斥是进程同步的特例。
进程间通信的方式:
- 信号通信机制:signal
- 信号量与P/V操作
- 共享内存通信机制
- 消息队列传递通信机制
- socket 单机/网络通信机制
信号
别名软中断,通常用来处理可以延时的任务,比如tcp/ip操作,SCSI协议操作等。
信号量
组成元素:一个变量、一个进程等待队列。
信号量加上P/V操作可用来解决进程间的同步与互斥问题,不过仅限传递信号,并没有传递数据的能力。
两大种类:system v版本的信号量只能用于进程,而POSIX版的可同时用于进程与线程。