💻
Operating System
  • 操作系统
  • 第一章:操作系统概述
    • 1. 操作系统概论 & 功能
    • 2. 操作系统的四个特征
    • 3. 操作系统的发展 & 分类
    • 4. 操作系统的运行机制
    • 5. 中断 & 异常
    • 6. 系统调用
    • 7. 操作系统的体系结构
  • 第二章:进程管理
    • 1. 进程的概念 & 组成 & 特征
    • 2. 进程的状态 & 转换
    • 3. 进程控制
    • 4. 进程通信
    • 5. 线程
    • 6. 进程的调度
    • 7. 进程同步 & 互斥
    • 8. 死锁
  • 第三章:内存管理
    • 1. 内存的基础知识
    • 2. 内存空间的分配与回收
    • 3. 内存空间的扩充
    • 4. 地址转换
    • 5. 存储保护
  • 第四章:文件管理
    • 1. 文件的基本概念 & 属性
    • 2. 文件的逻辑结构
    • 3. 文件的物理结构
    • 4. 文件的目录结构
    • 5. 空闲分区管理
    • 6. 文件的基本操作
    • 7. 文件共享
    • 8. 文件保护
    • 9. 磁盘管理
Powered by GitBook
On this page
  • 1. 进程通信定义
  • 2. 共享存储
  • 3. 管道通信
  • 4. 消息传递

Was this helpful?

  1. 第二章:进程管理

4. 进程通信

Previous3. 进程控制Next5. 线程

Last updated 4 years ago

Was this helpful?

1. 进程通信定义

进程通信就是进程之间的信息交换

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

为了保证安全,一个进程不能直接访问另一个进程的地址空间。但是进程之间的信息交换又是必须实现的。为了保证进程间的通信安全,操作系统提供了一些方法。

  • 共享存储

  • 消息传递

  • 管道通信

2. 共享存储

两个进程对共享空间的访问必须是互斥的(互斥访问通过操作系统提供的工具实现)

基于数据结构的共享:比如共享空间里只能放一个长度为 10 的数组。这种共享方式速度慢、限制多,是一种低级通信方式

基于存储区的共享:在内存中画出一块共享存储区,数据的形式、存放位置都是由进程控制,而不是操作系统。相比之下,这种共享方式速度更快,是一种高级通信方式

3. 管道通信

  1. 管道只能采用半双工通信,某一时刻内只能实现单向的传输。如果要实现双向同时通信,则需要设置两个管道

  2. 各进程要互斥地访问管道

  3. 数据以字符流的形式写入管道,当管道写满时,写进程的 write() 系统调用将被阻塞,等待读进程将数据取走。当读进程将数据全部取走后,管道变空,此时读进程的 read() 系统调用将被阻塞

  4. 如果没写满,就不允许读;如果没读空,就不允许写

  5. 数据一旦被读出,就从管道中被抛弃,这就意味着读进程最多只能有一个,否则可能会有读错数据的情况

4. 消息传递

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

消息包括消息头和消息体,其中消息头包括:发送进程 ID、接收进程 ID、消息类型、消息长度等格式化信息

消息传递的两种方式:

  • 直接通信方式:消息直接挂到接收进程的消息缓冲队列上

  • 间接通信方式:消息先发送到中间实体(信箱)中,因此也称“信箱通信方式”。e.g. 计网中的电子邮件系统