上交os lec7 进程间通信
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中可以共享参数栈和寄存器