进程的通信

186 阅读2分钟

1. 定义

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

进程拥有各自进程的内存空间,进程1无法直接访问进程2的内存空间。因为进程2的地址空间是操作系统分配给进程2的,不能被共享。

2. 为什么需要进程通信

为了保证的系统的安全,一个进程不能直接地访问另一个进程的地址空间。但不可避免,进程之间需要通信。

进程通信的方式

- 共享存储

- 进程与进程之间设置一个共享空间,在访问共享空间的时候,需要互斥(一般使用pv操作)地访问,(对临界资源。。。?)
- 共享存储有两种方式
    - 基于数据结构的 低级(比如只能存放长度为10的数组)
    - 基于存储区的共享(在内存中会画出一块存储区,位置数据都由两个进程相互决定的,更快速)

- 管道通信

- 管道其实是设置一个特殊的共享文件,其实就是一个缓冲区
- 一个管道只能实现半双工通信(某一时间段内只能单向的传输),实现双向同时通信,需要两个管道
- 各进程互斥地访问管道
- 数据读出,就从管道中被抛弃,读进程最多只有一个,否则会出错
- 在管道读写中,,在写满时不能再写,读空时不能再读,没写满,不能读,没读空,不能写

- 消息传递

- 消息的传递是通过传递结构化的信息,一般有消息头,消息体,像我们熟知的报文就是一种消息体。
- 系统会提供给进程 “发送原语以及接受原语”两种操作
- 消息传递有两种方式
    - 直接通信方式,消息会直接挂在到接受方的消息队列里
    - 间接通信方式,通过信箱的方式,信息先发送到中间体(信箱)中
         

参考:www.youtube.com/watch?v=N-l…