Please enable JavaScript.
Coggle requires JavaScript to display documents.
进程通信与同步 - Coggle Diagram
进程通信与同步
协作进程:进程之间共享数据且有通信
计算速度提高:并行执行子任务
模块化
信息共享
方便性
同步
非阻塞发送:发送消息后恢复
阻塞接收:接收消息阻塞直到有信息可用
阻塞发送:发送消息阻塞,直到消息由进程或者邮箱来接受
非阻塞接收:接收消息接收到有效消息或者空消息
IPC:用于在两个进程之间交换信息
共享内存
信息传递
需要内核干预
在分布式系统上实现更加方便
生产者-消费者模型
生产者想要放置元素到满的buffer中时会沉睡直到消费者取出元素将它唤醒
消费者想要从一个空的buffer中获取元素时会沉睡直到生产者往buffer中放置元素然后唤醒消费者
缓存
有限容量
无限容量
零容量
命名
直接通信
模块化程度有限-硬编码
间接通信
邮箱由进程拥有
需要区分所有者和使用者
邮箱由操作系统拥有
管道
普通管道
只能用于父子进程
子进程继承父进程的管道并且读出和写入方向完全相同,fd[0]读出端,fd[1]:写入端
单向的
通信结束后就不存在了
命名管道
双向的
父子关系不是必须的
一直存在直至被显式地删除
通信是双向的,但是是半双工(同一时间只能往一个方向传输)
对于UNIX,其被命名为FIFO
通信进程应该位于同一台机器上,否则应该使用套接字
独立进程:进程之间相互独立