欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

[操作系统学习笔记] 处理器管理 1.4

最编程 2024-03-11 06:56:56
...

【操作系统学习笔记】处理器管理1.4

参考书籍: 王道考研
视频地址: Bilibili

进程通信

进程间通信 IPC 是指两个进程之间产生数据交互

进程是分配系统资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立

为了保证安全,一个进程不能直接访问另一个进程的地址空间

共享存储

通过增加页表项/段表项即可将用一片共享内存区域映射到各个进程的地址空间中

  • 为避免出错,各个进程对共享空间的访问应该是互斥的
  • 各个进程可使用操作系统内核提供的同步互斥工具(PV 操作)

基于存储区的共享:操作系统在内存中划出一块共享存储区,数据的形式,存放位置都由通信进程控制,而不是操作系统。这种共享方式速度很快,是一种高级通信方式
基于数据结构的共享:比如共享空间里只能放一个长度为 10 的数组。这种共享方式速度慢、限制多,是一种低级通信方式

消息传递

进程间的数据交换以格式化的消息为单位。进程通过操作系统提供的发送消息/接收消息两个原语进行数据交换

  • 消息头: 发送进程 ID、接收进程 ID、消息长度
  • 消息体

分类

  • 直接通信方式: 需要指明接收进程 ID
  • 间接通信方式: 不需要直接接收进程 ID,需要通过信箱间接进行通信

管道通信

管道是一个特殊的共享文件,又名 pipe 文件。起始就是在内存中开辟应该大小固定的内存缓冲区

  • 与共享存储的区别是,管道是先进先出的单向半双工数据流
  • 各进程要互斥地访问管道(由操作系统实现)
  • 当管道被写满时,写进程将阻塞,直到读进程将管道中的数据取走,即可唤醒写进程
  • 当管道被读空时,读进程将苏泽,直到写进程将管道中写入数据,即可唤醒读进程
  • 管道当中的数据一旦被读出,就会彻底消失,因此多个进程读取同一个管道时可能会导致错乱
    • 一个管道允许多个写进程,一个读进程
    • 允许多个写进程多个读进程,但是系统会让各个读进程轮流读数据