进程通信之消息传递

#消息传递

  • 进程间的数据交换以格式化的消息为单位,进程通过操作系统提供的“发送消息/接受消息”的两个原语进行数据交换。
  • 分为两种方式
  • 直接通信方式
  • 间接通信方式(信箱通信方式)
  • #格式化的消息

  • 消息头:发送进程ID 接受进程ID 消息长度等 的格式化的信息
  • 消息体:存储要发送的消息数据
  • Pasted image 20260622200320.png
  • #消息传递--直接通信方式

  • Pasted image 20260622200309.png
  • 上图是P->Q传递完成后的形式,以防我看不懂,我解释下
  • 1.首先进程P在自己的地址空间中制作一个消息体,msg,使用发送原语后,操作系统会根据相关参数,将msg挂到进程Q的消息队列上
  • 2.进程Q执行接收原语,操作系统对扫描Q的消息队列,根据参数返回所需消息,即返回msg
  • 3.如图,msg的消息被送到进程Q,消息传递成功
  • 还有就是,身份识别,啊pid知道吧,每个进程都有的,记录在PCB里面,不用多说了
  • PS:你要是问我为什么Q知道接受原语,我只能说,Q只是个程序,他必然知道什么时候该接受消息,什么时候不接受消息
  • #消息传递--间接通信方式(信箱通信方式)

  • 怎么B站弹幕里的人都傻傻的🤔
  • Pasted image 20260622201245.png
  • 一样的,我解释下
  • 1.进程P调用发送原语,发送到信箱A
  • 2.进程Q调用接受原语,从A中接受msg
  • 3.读到msg
  • over