学习笔记】"/>
进程通信【操作系统学习笔记】
10.进程通信
进程通信就是指进程之间的信息交换
各进程拥有的内存地址空间相互独立,故而需要通信
但为了安全,一个进程不能直接访问另一个进程的地址空间,但这种信息交换有是必须的,故操作系统提供了下面三种方式来通信
🍅共享存储
- 设置一个共享空间
- 要互斥地访问共享空间(两个进程不能同时访问同一个共享空间)
- 两种方式
- 基于数据结构(低级)
- 比如共享空间里只放了一个长度为10的数组,速度慢,限制多
- 基于存储区的共享(高级)
- 在内存中画出一块共享存储区。数据形式,存放位置都由进程控制,更自由速度更快
- 基于数据结构(低级)
🍅管道通信
- 这种做法的原理是设置一个特殊的共享文件(管道),所谓"管道"其实就是一个缓冲区
- 一个管道只能实现半双工通信
- 在某一时间段内只能实现单向的传输(管道并不是单向的,只是不能同时用),如果要实现双向同时通信,则需要设置两个管道。这就是半双工通信
- (这个概念在计网中有待学习)
- 各进程要互斥访问管道
- 写满时,不能再写。读空时,不能再读
- 在管道写满时,写进程的write()系统调用将被阻塞,必须要等读进程将数据全部取走完后才能再写。当数据被全部取走后,管道变空,此时读进程的read()系统调用将被阻塞。
- 如果没写满,就不允许读,如果没读空,就不允许写
🍅消息传递
- 传递结构化的消息(消息头/消息体)
- 系统提供"发送/接受原语"
- 两种方式
- 直接通信方式
- 消息直接挂到接收方的消息队列里
- 间接(信箱)通信方式
- 消息先发到中间体(信箱)
- 直接通信方式
更多推荐
进程通信【操作系统学习笔记】
发布评论