目录

  • 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 考研真题讲解
经典互斥与同步

进程互斥与同步

当遇到既有互斥,也有同步问题时,可以按照以下思路来分析。

(1)首先分析是什么类型的题:纯互斥、纯同步、还是同步和互斥并存。

(2)同步+互斥题,先做同步,后做互斥。

(3)分析存在几个运行主体。

(4)站在每个运行主体的角度思考:它需要申请什么资源(条件)、释放什么资源(结果)。

(5)分析同步信号量的初值。

(6)再做互斥/纯互斥题:找到临界区(临界资源),完成互斥。




实例:苹果橘子问题

桌子上有一只盘子,最多可容纳两个水果,每次只能放入或取出一个水果。爸爸专向盘子中放苹果,妈妈专向盘子中放橘子,儿子专等吃盘子中的橘子,女儿专等吃盘子中的苹果。PV描述以上过程。


实例:奇偶数缓冲区问题

三个进程P1、P2、P3互斥使用一个包含N个单元的缓冲区:

  • P1每次用produce()生成一个正整数并用put()送入缓冲区某一空单元

  • P2每次用getodd()从该缓冲区中取出一个奇数并用countodd()统计奇数个数

  • P3每次用geteven()从该缓冲区中取出一个偶数并用counteven()统计偶数个数

请用信号量机制实现这三个进程的同步与互斥活动,并说明所定义的信号量的含义,要求用伪代码描述。



实例:仓库入库问题

有一个仓库可以存放A和B两种产品,要求:(1)每次只能存入一个产品(A或B)(2)-N<A产品数量 - B产品数量<M(N和M是正整数)。试用P、V操作描述产品A与B的入库过程。


实例:理发师问题

某个理发店有n个椅子,当没有顾客时,理发师去睡觉。如果有顾客进来时,理发师正在睡觉,这个顾客会叫醒他,如果没有椅子,顾客直接离开。试用P、V操作描述以上过程



本节资料