目录

  • 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不断的循环测试状态,造成严重的CPU资源浪费。(2不公平现象,会造成部分进程“永久饥饿”。


更好的解决方案:信号量与PV原语

信号量(Semaphore):一种特殊的变量,表现形式是一个整数附加一个队列。

  struct  semaphore

  {

      int value;

      pointer_PCB  queue;

  }

P原语(Passeren)和V原语(Verhoog)


  


经典互斥问题:读者写者问题

有两组并发进程:读者和写者,共享一组数据区,要求:①允许多个读者同时执行读操作;②不允许读者、写者同时操作;③不允许多个写者同时操作。


第一类:读者优先

如果读者进程运行:

1)无读者、写者,新读者可以读;

2)有写者等,但有其它读者正在读,则新读者也可以读;

3)有写者写,新读者等。

如果写者进程运行:

1)无读者、写者,新写者可以写;

2)有读者读,新写者等待;

3)有其它写者写,新写者等待。



本节资料