1、为什么要进行进程间通信:
因为进程之间可能会存在特定的协同工作的场景,而协同就必须要进行进程间通信。
进程间通信的目的:
- 数据传输:一个进程需要将它的数据发送给另一个进程。
- 资源共享:多个进程之间共享同一份资源。
- 通知事件:一个进程需要向另一个或一组进程发送消息,通知它发生了某种事件(例如子进程终止时要通知父进程以进行资源回收)。
- 进程控制:有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知道它的状态改变。
2、如何进行进程间通信:
由于一个进程是不能直接访问到另一个进程的资源的,因为进程具有独立性。所以进程之间要通信,就不能使用属于进程的资源,而应该使用一份公共资源(文件、队列、内存块等)。
所以进程间通信的前提是:
先让不同的进程看到同一份(OS)资源(“一段内存”)(这段资源(内存)由操作系统提供,这样也就不违背进程间具有独立性的原则)
且一定是某一个进程先需要通信,让OS创建一个共享资源 -> OS就必须提供很多系统调用,OS创建的共享资源的不同,进程间通信就会有不同的种类。