进程间通信简介(一)

来源:互联网 发布:mac vmware tools 编辑:程序博客网 时间:2024/05/16 01:42

    IPC(Inter-process communication)进程间通信,进程间通信包括同一设备上的不同进程和不同设备上的不同进程。不同设备上的不同进程通信就涉及到网络。

      进程间通信有几种稳定、有效的的方式几乎被所有的操作系统采用:共享内存(Shared Memory)、管道(Pipe)、Unix Domain Socket和 RPC(Remote Procedure Calls 远程调用)。

    (共享内存) 例子一:进程一与进程二通过“共享内存”通信

       step1:进程一在内存中申请一块共享区域,申请的共享区域与某个特定key绑定。

       step2:将共享区域映射到进程一的空间(这样才能进一步操作)。

       step3:进程二调用api通入同一个key将共享区域映射到进程二。

       step4:对共享区域读写进程信息交换。

       step5:完成通信后,各个进程撤销之前的映射操作

       step6:删除共享区域,回收内存。

     

      (管道不做介绍)

      (Unix Domain Socket) 我们因为学习TCP/IP协议才接触到Socket。Socket在网络通信领域广泛应用 被称为Network Socket;Socket在同一机器上的进程间通信也是完全能够胜任的,但是执行效率不理想。因此出现了Unix Domain Socket专门针对单机内的进程间通信。(Network Socket与UDS的区别:前者是以TCP/IP协议栈为基础的,需要分包、重组等一系列操作,而后者的实现机制上不是依赖这些协议的


      (RPC) RPC涉及到的通信双方通常运行于不同的机器中。RPC机制中开发人员不需关心中间传输过程怎样实现。一个完成的通信步骤:

      1,客户端进程调用Stub接口。

      2,Stub跟操作系统要求打包,并执行系统调用

      3,由内核完成与服务端的具体交互。,

      4,服务端Stub解包并调用与数据包匹配的进程。

      5,进程执行操作

      6,服务端逆向将数据返回给客户端。

0 0
原创粉丝点击