从新整理操做系统概念系类——进程通讯

前言

介绍一下进程之间的通讯,以及我在工做中对于进程通讯的选择。android

为何有这个进程通讯的概念呢。缓存

其实是由于进程是一个独立的运行单位,它分配的内存地址不可以被其余进程访问,这样的设计实际上是为了安全。安全

可是有时候咱们进程之间须要交换信息,那么怎么办呢?操做系统给了咱们路口。app

进程通讯有下面几种方式:操作系统

图:设计

正文

共享存储

看图:code

举个栗子。blog

不知道各位有没有开发过android,android app之间是如何通讯的呢?队列

app确定是不一样的进程,他们有一种Ashmem来实现共享内存,有兴趣能够看看。进程

管道通讯

管道是指用于链接读写进程的一个共享文件,又名pipe 文件。其实就是在内存中开辟一个大小固定的缓冲区。

注:管道只能采用半双工通讯,某一段时间内只能实现单项的传输。若是要实现双通道,那么要两根。

它的运做方式是这样的,好比说进程一写完了数据后,进程二才能去读取数据。

这种管道是1对1的概念,只能一个进程对另一个进程,而不能1对多。

由于是这样子的,只有管道写满以后,另一个进程才能读取,在另一个进程读取完毕以后,前面一个进程才能继续写。

因此说管道通讯实际上是有很是严格的要求的。

消息传递

进程间的数据交换以格式化的消息为单位。进程经过操做系统提供的"发送消息/接收消息"两个原语来进行数据交换。

具体操做以下:

消息传递有两种方式,一种是直接通讯方式,一种是间接通讯方式。

直接通讯是这样子的,一个进程经过发送原语发送消息,这些消息操做系统会把这些消息挂载到目的进程消息缓存队列中,若是目的进程须要接收,那么目的进程能够经过接收原语接收。

所谓原语,通常是指由若干条指令组成的程序段,用来实现某个特定功能,在执行过程当中不可被中断。

间接通讯方式,消息先发送到中间实体(信箱)中,所以也称“信箱通讯方式”。

形象点以下:

相关文章
相关标签/搜索