操作系统——进程的通信

183 阅读1分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

进程的通信

进程之间可以通过信息交换的方式通信。根据信息交换的方式不同,进程通信分为:

  • 共享存储
  • 信息传递
  • 管道通信

注:如果需要传递的信息很小,一个布尔值即可表示,那可以通过PV操作来实现

共享存储

共享存储分为基于数据结构的共享存储和基于存储区的共享存储,其中基于数据结构的共享存储由于确定了数据结构,比如一个结构体,一个数组,因此其实本质上和一个多个布尔值的PV操作区别不大。

而基于存储区的共享存储更加灵活,不再受限于数据结构,信息交换会更加的方便

信息传递

  • 以格式化消息Message为单位,操作系统提供发送消息接收消息两种原语实现数据交换
  • 通过消息缓冲队列直接通信
  • 通过信箱间接通信

管道通信(适用于大量数据的通信)

  • 管道:用于连接一个读进程和一个写进程以实现它们之间通信的共享文件,又名pipe文件
  • 字符流,半双工【从管道读写数据是一次性操作】
  • 管道可以克服文件进行通信的管道的大小限制以及读的太快了——管道满了写被阻塞管道空了读被阻塞