IPC

IPC是Inter-Process Communication的缩写,意思是进程间通信或者跨进程通信,是指两个进程之间进行数据交换的过程。

进程是独立的运行对象,不痛的进程在不痛地址空间内运行,所以进程之间不会相互影响。但是由于地址空间独立,很难进行相互通信,Linux内核提供了各种的IPC机制,以便实现进程间通信。

Linux内核的ICP类型

  • 管道:
    管道连接两个进程,一个进程只能进行读取,一个进程只能进行写入,只能单向传递数据(半双工通信)。(如果想要利用管道在两个程序间进行全双工通信,就需要两个管道)
    管道有局限性,只能用于父进程与子进程间的通信,以及具有同一父进程的进程间通讯,因为管道的文件描述符无法与其它进程共享,只能像父进程与子进程这样的特殊关系下共享描述符
  • 消息队列:
    消息队列用于进程间的消息交换。进程向消息队列写入信息,另一个进程重消息队列读取信息。
  • 共享内存:
    共享内存由内核管理,允许进程间共享内存区域。进程向内核请求分配共享内存后,其他程序就可以访问分配的共享内存。共享内存可以直接访问内存,因此可以快速运行。
  • 内存映射:内存映射将打开的文件对应到内存,并在进程间共享内存。
  • 信号量:
    其他IPC大部分以在进程间传输数据为目的,但信号量用于同步进程间的数据,以及控制访问资源。
  • 套接字:
    网络套接字支持远程计算机的进程间通信,UNIX套接字提供了同一系统内进程间通讯的方法,于其它的IPC相比,套接字更通用。

套接字

客户端-服务器端模型

在网络中首发信息会伴随很复杂的操作,所以Linux内核提供套接字编程接口,开发人员可以利用Linux内核提供的网络连接,终止,数据传输,域名更改,地址更改等相关API开发。

服务器端程序的处理流程

你可能感兴趣的:(IPC)