进程通信之消息传递
#消息传递
进程间的数据交换以格式化的消息为单位,进程通过操作系统提供的“发送消息/接受消息”的两个原语进行数据交换。
分为两种方式
直接通信方式
间接通信方式(信箱通信方式)
#格式化的消息
消息头:发送进程ID 接受进程ID 消息长度等 的格式化的信息
消息体:存储要发送的消息数据
#消息传递--直接通信方式
上图是P->Q传递完成后的形式,以防我看不懂,我解释下
1.首先进程P在自己的地址空间中制作一个消息体,msg,使用发送原语后,操作系统会根据相关参数,将msg挂到进程Q的消息队列上
2.进程Q执行接收原语,操作系统对扫描Q的消息队列,根据参数返回所需消息,即返回msg
3.如图,msg的消息被送到进程Q,消息传递成功
还有就是,身份识别,啊pid知道吧,每个进程都有的,记录在PCB里面,不用多说了
PS:你要是问我为什么Q知道接受原语,我只能说,Q只是个程序,他必然知道什么时候该接受消息,什么时候不接受消息
#消息传递--间接通信方式(信箱通信方式)
怎么B站弹幕里的人都傻傻的🤔
一样的,我解释下
1.进程P调用发送原语,发送到信箱A
2.进程Q调用接受原语,从A中接受msg
3.读到msg
over