7.1进程间通信背景和基础
- 将一个应用实现为一个进程,非常冗余
比如本来,两个进程本来可以共享数据库实现
其次是比较低效,由于本来实现一个邮件应用本来应该只关注邮件任务逻辑,但是将完整的应用设计为一个应用,其数据库也需要自己设计
最后是即使将一个应用设计为一个进程,仍然需要进程间通信,需要进程间共享
- 进程间的协作
但是需要进程间的依赖与互相影响 - 进程间通信

7.2 共享内存
- 共享内存需要处理好同步

- 共享内存基本实现



- 共享内存的问题
轮询浪费时间,固定时间检查又时延长
7.3 消息传递
- 消息立马转发

- 消息传递的两个原语

- 双向通信


- 间接通信


- 间接通信到信箱中

- 信箱共享的挑战

7.4 消息传递的问题与解决方法
消息传递的阻塞与非阻塞
异步中的超时机制
- 同步通信与超时机制

- 快递桌充当缓冲的作用

7.5 Unix管道
- 两个进程之间的一根通信管道

- 定义管道

- xv6的管道

- pipewrite

- piperead

- sleep/wakeup通信机制

- 管道的优缺点

7.6 Unix消息队列
- 带类型的消息传递

- 消息队列先进先出,按照类型取值

- 消息队列可以有多个发送者,接收者
消息队列是FIFO与基于类型查询
7.7 轻量级远程方法调用LRPC
- unix之间的通信机制通常很重

- 之前的RPC非常复杂



- 数据传输慢?
RPC中可以共享参数栈和寄存器



7.8 ChCore进程间通信
原创文章,作者:端木书台,如若转载,请注明出处:https://blog.ytso.com/tech/aiops/270335.html