什么是进程间通信

介绍

这篇文章主要介绍”什么是进程间通信”,在日常操作中,相信很多人在什么是进程间通信问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答“什么是进程间通信”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

什么是进程间通信

多进程协作主要有以下三点优势。

<李>

将功能模块化,避免重复造轮子。

<李>

增强模块间的隔离,提供更强的安全保障。

<李>

提高应用的容错能力。

进程间通信(进程间,通信,IPC)则是多进程协作的基础。一般而言,IPC至少需要两方(如两个进程)参与。根据信息流动的方向,这两方通常被称为发送者和接收者。在实际使用中,IPC经常被用于服务调用,因此参与IPC的两方又被称为调用者和被调用者,或者客户端和服务端。

图7 - 1是一个简单的IPC设计。它假设内核已为两个进程映射了一段共享内存,且共享内存刚好可以存放两个消息(发送者消息和接受者消息)。

<中心> 什么是进程间通信

01进程间通信的重要功能

<强> 1。数据传递

消息传递(消息,传递)是IPC中常用的数据传递方式,即将数据抽象成一个个的消息进行传递。不同的IPC设计有不同的消息抽象,且消息传递往往需要一个“中间人”(如共享内存)。

<强> 2。控制流转移

当一个通信发生时,内核将控制流从发送者进程切换到接收者进程(返回的过程类似).IPC中的控制流转移,通常是利用内核对进程的运行状态和运行时间的控制来实现的。

02进程间通信的分类

<强> 1。单向IPC、双向IPC、单/双向IPC

单向IPC通常指消息在一个连接上只能从一端发送到另一端,双向IPC则允许双方互相发送消息。而单/双向IPC则会根据通信中具体的配置选项等来判断是否需要支持单向或双向的通信。实际中,很多系统选择的是单/双向IPC,这样可以比较好地支持各种场景。当然,如管道,信号等只支持单向IPC的机制在实际中同样有较多的应用。

<强> 2。同步IPC和异步IPC

简单来看,同步IPC指它的IPC操作(如发送)会阻塞进程直到该操作完成;而异步IPC则通常是非阻塞的,进程只要发起一次操作即可返回,而不需要等待其完成。

相比异步而言,同步IPC有着更好的编程抽象。然而同步IPC在操作系统的发展中,逐渐表现出一些不足。一个典型的问题是并发。总的来看,目前大部分操作系统内核都会选择同时实现同步和异步IPC、以满足不同的应用需求。

03进程间通信的相关机制

<强> 1。超时机制

超时机制扩展了IPC通信双方的接口,允许发送者/接收者指定它们发送/接收请求的等待时间。比如,一个应用程序可以花费5秒等待文件系统进程的IPC请求处理操作。如果超过5秒仍然没有反馈,则由操作系统内核结束这次IPC调用,返回一个超时的错误。

<强> 2。通信连接管理

对于基于共享内存的进程间通信方案,通信连接的建立通常是在建立共享区域的一瞬间完成的;而对于涉及内核的控制流转移的通信而言,通信连接管理是内核IPC模块的很重要的一部分。

虽然实际的系统中会有各种不同的实现,但是它们大部分可以被归为两类,终止,和终止,直接通信和间接通信。直接通信是指通信的进程一方需要显式地标识另一方。间接通信需要经过一个中间的信箱来完成通信,每个信箱有自己唯一的标识符,而进程间通过共享一个信箱来交换消息。

<强> 3。权限检查

进程间通信通常依赖于一套权限检查的机制来保证连接的安全性,例如,seL4等微内核系统中的功能机制,会将所有的通信连接抽象成一个个的内核对象。而每个进程对内核对象的访问权限(以及能够在该内核对象上执行的操作)由能力来刻画。

当一个进程企图和某其他进程通信时,内核会检查该进程是否拥有一个功能,是否有足够的权限访问一个连接对象并且对象是指向目标进程的。类似地,宏内核,如Linux系统,通常会复用其有效用户/有效组的文件权限,以刻画进程对于某个连接的权限。

<强> 4。命名服务

命名服务像是一个全局的看板,可以协调服务端进程和客户端进程之间的信息。简单来说,服务端进程可以将自己提供的服务告诉命名服务进程,比如文件系统进程可以注册一个“文件系统服务”,网络系统进程可以注册一个“网络服务”。

什么是进程间通信