目录

  • 1 绪论
    • 1.1 课程引入
    • 1.2 操作系统的发展过程
    • 1.3 操作系统的基本类型
    • 1.4 操作系统的特征
    • 1.5 操作系统的功能
    • 1.6 操作系统的组织结构
    • 1.7 章节测验
    • 1.8 考研真题讲解
  • 2 操作系统的关键技术
    • 2.1 操作系统的硬件环境
    • 2.2 中央处理器
    • 2.3 系统调用
    • 2.4 存储系统
    • 2.5 中断机制
    • 2.6 缓冲技术
    • 2.7 章节测验
    • 2.8 考研真题讲解
  • 3 进程的描述与控制
    • 3.1 进程概述
    • 3.2 进程状态及转换
    • 3.3 进程控制
    • 3.4 进程互斥
    • 3.5 进程同步
    • 3.6 经典互斥与同步
    • 3.7 进程通信
    • 3.8 线程
    • 3.9 章节测验
    • 3.10 考研真题讲解
  • 4 资源分配与死锁
    • 4.1 资源管理概述
    • 4.2 进程死锁
    • 4.3 死锁预防
    • 4.4 死锁避免
    • 4.5 死锁的检测和解除
    • 4.6 章节测验
    • 4.7 考研真题讲解
  • 5 处理机管理
    • 5.1 处理机的多级调度
    • 5.2 作业调度与进程调度
    • 5.3 调度算法
    • 5.4 两道批处理调度
    • 5.5 实时调度
    • 5.6 章节测验
    • 5.7 考研真题讲解
  • 6 存储管理
    • 6.1 存储管理概述
    • 6.2 分区存储管理
    • 6.3 页式存储管理
    • 6.4 页面置换算法
    • 6.5 段式存储管理
    • 6.6 段页式存储管理
    • 6.7 “抖动”与工作集
    • 6.8 章节测验
    • 6.9 考研真题讲解
  • 7 文件管理
    • 7.1 文件和文件系统
    • 7.2 文件的逻辑结构与存取方法
    • 7.3 文件的物理结构
    • 7.4 文件存储空间管理
    • 7.5 文件目录
    • 7.6 文件共享与安全
    • 7.7 磁盘调度算法
    • 7.8 章节测验
    • 7.9 考研真题讲解
  • 8 设备管理
    • 8.1 设备管理概述
    • 8.2 设备数据传输方式
    • 8.3 设备分配
    • 8.4 设备驱动程序
    • 8.5 章节测验
    • 8.6 考研真题讲解
进程同步

进程同步引入

在上一节,由并发进程竞争公有资源,引出了互斥的概念及实现方法。那么进程间是否还存在其他的制约关系?

例子:计算进程和打印进程共同使用同一缓冲区Buffer,计算进程反复地把每次计算的结果放入Buffer,打印进程反复地取出Buffer的数据打印输出。


以上二者进程的并发与互斥不同,二者互为因果关系,计算进程的执行结果是打印进程的执行条件,打印进程的执行结果也是计算进程的执行条件。这种只存在于被影响进程之间的制约关系称为直接制约,也就是进程同步。



实例:用P、V原语实现同步(单缓冲)

A为发送进程,B为接收进程,二者通过缓冲区Buffer传递数据,条件如下:

(1)缓冲区空时,B不能取;

(2)缓冲区满时,A不能发送。


实例:用P、V原语实现同步(多缓冲)

A为发送进程,B为接收进程,二者通过缓冲区Buffer传递数据,条件如下:

(1)缓冲区空时,B不能取;

(2)缓冲区满时,A不能发送;

(3)缓冲区按照FIFO(First In First Out)排列。


实例:生产者消费者问题

而在一般情况下,在具体问题的分析中进程互斥与同步都是需要考虑的。

例如多个生产者进程和消费者进程同时访问缓冲区队列。生产者生产数据放入缓冲区,消费者取走数据消费,缓冲区不能同时进行读写操作。



本节资料