操作系统——进程通信的类型

进程通信的类型


随着OS的发展,用于进程之间的实现通信的机制也在发展,并已由早期的低级进程通信机制发展为能传送大量数据的高级通信工具机制。目前,高级通信机制可归结为四大类: 共享存储器系统、管道通信系统、消息传递系统以及客户机-服务器系统。

#1.共享存储器系统
在共享存储器中,相互通信的进程共享某些数据结构或共享存储区,进程之间能够通过这些空间进行通信。据此,又可把它们分成以下两种类型:
**(1)基于共享数据结构的通信方式。**在这种通信方式中,要求诸进程共用某些数据结构,借以实现诸进程间的信息交换。操作系统仅提供共享存储器,由程序员负责对公用数据结构的设置及对进程间同步的处理。这种通信方式仅适用于传递相对少量的数据,通信效率低下,属于低级通信。
(2)基于共享存储区的通信方式。为了传输大量数据,在内存中划出了一块共享存储区域,诸进程可通过对该共享区的读或写交换信息,实现通信,数据的形式和位置甚至访问控制都是由进程负责,而不是OS。这种通信方式属于高级通信。

#2.管道(pipe)通信系统
所谓“管道”是指连接一个读进程和一个写进程以实现他们之间通信的一个共享文件,又名pipe文件。向管道(共享文件)提供输入的发送进程(即写进程)以字符流形式将大量的数据送入管道;而接收管道输出的接收进程(即读进程)则从管道中接收(读)数据。由于发送进程和接收进程是利用管道进行通信的,故又称为管道通信。这种方式首创于UNIX系统,由于它能有效的传送大量数据,因而又被引入到许多其他的操作系统中。
为了协调双方的通信,管道机制须提供以下三方面的协调能力:①互斥:即当一个进程正在对pipe执行度或写操作时,其它(另一)进程必须等待。②同步:指当写(输入)进程把一定数量(如 4KB)的数据写入pipe,便去睡眠等待,直到读(输出)进程取走数据后再把它唤醒。③确定对方是否存在,只有确定了对方已存在时才能进行通信。

#3.消息传递系统
在该机制中,进程不必借助任何共享存储区或数据结构,而是以格式化的消息为单位,将通信的数据封装在消息中,并利用OS提供的一组通信命令(原语),在进程间进行信息传递,完成进程间的数据交换。
该方式隐藏了通信实现细节,使通信过程对用户透明化,降低了通信程序设计的复杂性和错误率,成为当前应用最为广泛的一类进程间通信的机制。
基于消息传递系统的通信方式属于高级通信方式,因其实现方式不同,可进一步分成两类:
(1)直接通信方式,是指发送进程利用OS提供的发送原语,直接把消发送给目标进程;
(2)间接通信方式,是指发送进程和接收进程,都通过共享中间实体(称为邮箱)的方式进行消息的发送和接收,完成进程间的通信。

#4.客户机-服务器系统
前面所述的共享内存、消息传递等技术,虽然也可以用于实现不同计算机进程的双向通信,但客户机-服务器系统的通信机制,在网络环境的各种应用领域已成为当前主流的通信实现机制,其主要的实现方法分为三类:套接字、远程调用和远程方法调用。

你可能感兴趣的:(操作系统)