1.共享储存器系统
(1)基于共享数据结构的通信方式:要求诸进程公用某些数据结构,借以实现诸进程之间的信息交换。传递数据少,效率低小,属于低级通信
(2)基于共享存储区的通信方式:为了传输大量数据,在内存中划出了一块共享存储区域,诸进程可通过对该共享区的读或写交换信息,实现通信,数据的形式和位置甚至访问控制都是由进程负责的,而不是OS。属于高级通信(通信前需向系统申请或者共享区中的一个分区附加到自己的地址空间进行读写,不需要时将其归还给共享区)
2.管道(pipe)通信系统
所谓“管道”,是指用于连接一个读进程和一个写进程以实现它们之间通信的一个文件,又名pipe文件。写进程以字符流的形式将数据送入管道,读进程则从管道中接受数据。这种形式首创于UNIX系统,能有效地传输大量数据。它具有以下三方面的协调能力:
(1)互斥:即当一个进程正在对pipe执行读、写操作时,其他进程必须等待
(2)同步:当写进程将一定量的数据时输入pipe文件时,便去睡眠等待,直到读进程取走数据后再把它唤醒。反之,当读进程读一空的pipe时,便去睡眠等待,直到写进程将数据写入管道再将其唤醒。
(3)确认对方是否存在,只有确定了对方已存在时才可以进行通信
3.消息传递系统
在该机制中,以格式化的消息为单位,将通信封装在消息中,并利用操作系统提供的一组通信命令(原语),在进程中进行消息传递,完成进程间的数据交换。该方式隐藏了通信实现细节,其通信过程对用户透明化,降低了通信程序的复杂性和错误率,成为了当前应用最为广泛的一类进程间通信机制。属于高级通信方式。因其实现方式的不同,又进一步分为两类:(1)直接通信方式;(2)间接通信方式
4.客户机-服务器系统
其主要实现方法分为三类:套接字、远程过程调用和远程方法调用
套接字:一个套接字就是一个通信标识类型的数据结构,包含了通信目的的地址、通信使用的端口号、通信网络的传输层协议、进程所在的网络地址,以及针对客户或服务器程序提供的不同系统调用等。分为:(1)基于文件型:在同一计算中实现,与管道通信原理差不多;(2)基于网络型:采用非对称方式通信,通信双方的进程运行在不同的主机环境下,使用一对套接字进行通信。 套接字的优点:不仅适用于同一台计算机内部的进程通信,也适用于网络环境中的不同计算机之间的通信。