进程通信

进程通信是指进程之间的信息交换。

高级通信机制可归纳为四类:
共享存储器系统
消息传递系统
管道通信系统
客户机—服务器系统

共享存储器系统 Shared-Memory System
两种类型:

基于共享数据结构的通信方式基于共享存储区的通信方式
进程公用某些数据结构,借以实现进程间的信息交换,操作系统仅提供共享存储器,由程序员负责对公用数据结构的设置及对进程间同步的处理为了传输大量数据,在内存中划出了一块共享存储区域,诸进程可通过对该共享区的读或写交换信息,实现通信,数据的形式和位置甚至访问控制都是由进程负责,而不是OS
低级通信,仅适于传递相对少量的数据,通信效率低下高级通信,需要通信的进程在通信前,先向系统申请获得共享存储区的一个分区,并将其附加到自己的地址空间中,便可对其中的数据进行正常读、写,读写完成或不再需要时,将其归还给共享存储区

消息传递系统 Message passing system —— 高级通信方式
在此机制中,进程不必借助任何共享存储区或数据结构,而是以格式化的消息为单位将通信的数据封装在消息中,并利用操作系统提供的一组通信命令(原语),在进程间进行消息传递,完成数据间的数据交换。

该方式隐藏了通信实现细节,使通信过程对用户透明化,降低了通信程序设计的复杂性和错误率,成为当前应用最为广泛的一类进程通信间通信的机制。
例如:计算机网络中的报文;微内核操作系统中的微内核与服务器的通信;
这机制很好地支持多处理机系统、分布式系统和计算机网络,因此成为这些领域最主要的通信工具。

根据实现方式不同,分成两类:

直接通信方式间接通信方式
发送进程利用OS所提供的发送原语,直接把消息发送给目标进程发送和接收进程,都通过共享中间体(称为邮箱)的方式进行消息的发送和接收,完成进程间的通信

管道(pipe)通信系统
管道 —— 指用于连接一个读进程和一个写进程以实现它们之间通信的一个共享文件,又名pipe文件。

向管道提供输入的发送进程(写进程)以字符流形式将大量的数据送入管道;而接收管道输出的接收进程(读进程)则从管道中接收数据。
这种方式首创于UNIX系统,由于它能有效地传送大量数据,因而又被引入到许多其他操作系统中。

为了协调双方的通信,管道机制必须提供以下三方面的协调能力:
1)互斥,当一个进程正在对pipe执行读/写操作时,其他(另一个)进程必须等待。
2)同步,当写(输入)进程把一定数据写入pipe,便去睡眠等待,直到读(输出)进程取走数据后再把它唤醒。当读进程读一空pipe时,也应睡眠等待,直至写进程将数据写入管道后才将之唤醒。
3)确定对方是否存在,只有确定了对方已存在时才能进行通信。

客户机—服务器系统 client-Server system
客户机-服务器系统的通信机制,在网络环境的各种应用领域已成为当前主流的通信实现机制,其主要的实现方法分为三类:
套接字、远程过程调用和远程方法调用

套接字 —— 一个通信标识类型的数据结构,包含了通信目的的地址、通信使用的端口号、通信网络的传输层协议、进程所在的网络地址,以及针对客户或服务器程序提供的不同系统调用(或API函数)等,是进程通信和网络通信的基本构件。

基于文件型基于网络型
通信进程都运行在同一台机器的环境中,套接字是基于本地文件系统支持的,一个套接字关联到一个特殊的文件,通信双方通过对这个特殊文件的读写实现通信,类似管道通常采用的是非对称方式通信,即发送者需要提供接收者命名,通信双方的进程运行在不同主机的网络环境下,被分配了一对套接字,一个属于接收进程(服务端),一个属于发送进程(客户端)。发送进程发出连接请求时,随机申请一个套接字,主机为之分配一个端口,与该套接字绑定,不再分配给其他进程,接收进程拥有全局公认的套接字和指定的端口,并通过监听端口等待客户请求。因此任何进程都可以向它发出连接请求和信息请求,以方便进程之间通信连接的建立。接收进程一旦收到请求,就接受来自发送进程的连接,完成连接,当通信结束时,系统通过关闭接受进程的套接字撤销连接。

套接字优势:不仅适用于同一台计算机内部的进程通信,也适用于网络环境中不同计算机间的进程通信。由于每个套接字拥有唯一的套接字号,这样系统中所有的连接都持有唯一的一对套接字及端口连接,对于来自不同应用程序进程或网络连接的通信,能够方便地加以区分,确保了通信双方之间逻辑链路的唯一性,便于实现数据传输的并发服务,而隐藏了通信设施及实现细节,采用统一的接口进行处理。

远程过程调用和远程方法调用
远程过程调用RPC(Remote Process Call) —— 一个通信协议,用于通过网络连接的系统。该协议允许运行于一台主机系统上的进程调用另一台主机系统上的进程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值