进程间通信概述

很多重要的程序都涉及到进程间通信(Interprocess Communication,IPC)的原因:把应用程序设计为一组相互通信的小片段比将其设计为单个庞大的程序更好。

从历史角度看,应用程序有如下几种构建方法。

(1)使用一个庞大的程序完成全部工作。程序的各部分可以实现为函数,函数之间通过参数、返回值和全局变量来交换信息。

(2)使用多个程序,程序之间用某种形式的IPC进行通信。许多标准的Unix工具都是按照这样的风格设计的,它们使用shell管道(IPC 的一种形式)在程序之间传递信息。

(3)使用一个包含多个线程的程序,线程之间使用某种IPC。这里仍然使用术语IPC ,尽管通信是在线程之间而不是在进程之间进行的。

(4)将(2)和(3)综合起来:用多个进程来实现,其中每个进程包含几个线程;在这中情况下,进程内部的线程之间可以通信,不同的进程之间也可以通信。

总上所述,,可以把完成给定任务所需的工作分到多个进程中,或许还可以进一步分到进程内的多个线程中。在包含多个处理器(CPU)的系统中,多个进程也许可以(在不同的CPU上)同时运行,或许给定的进程内的多个线程也能同时运行。因此可以把多个任务分到多个进程或线程中来减少完成任务的指定时间。

四种不同的IPC 形式:

(1)消息传递(管道、FIFO和消息队列)

(2)同步(互斥量、条件变量、读写锁、文件和记录锁、信号量)

(3)共享内存(匿名的和具名的)

(4)远程过程调用(Solaris门和Sun RPC)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章