Skip to content

设备分配与回收

考情分析

设备分配的数据结构和分配策略偶有考查。🔥 低频。

多个进程都想用打印机,但打印机一次只能服务一个——谁来分配、怎么排队、会不会死锁?这就是设备分配要解决的问题。

设备分配中的数据结构

设备分配依赖四张表:

各表的功能

数据结构内容说明
SDT(系统设备表)全部设备信息每个设备一个表项,指向 DCT
DCT(设备控制表)单个设备状态设备类型、状态、等待队列、指向 COCT
COCT(控制器控制表)控制器状态控制器状态、等待队列、指向 CHCT
CHCT(通道控制表)通道状态通道状态、等待队列

设备分配策略

分配方式

方式说明适用设备
独占式设备分配给一个进程后,直到释放前其他进程不能用打印机
共享式多个进程可交替使用磁盘
虚拟式通过 SPOOLing 将独占设备虚拟为共享设备虚拟打印机

分配算法

算法说明
先来先服务(FCFS)按请求顺序分配
优先级高者优先高优先级进程优先获得设备

安全性考虑

方式说明特点
安全分配进程发出 I/O 请求后立即阻塞,I/O 完成后才被唤醒不会死锁,但 CPU 与 I/O 串行
不安全分配进程发出 I/O 请求后可继续执行,可同时使用多个设备可能死锁,但效率高

设备分配的步骤

  1. 根据设备名查 SDT,找到设备的 DCT
  2. 检查 DCT 中设备状态,若空闲则分配;否则进入等待队列
  3. 根据 DCT 找到 COCT,检查控制器是否空闲
  4. 根据 COCT 找到 CHCT,检查通道是否空闲
  5. 三者(设备、控制器、通道)都空闲时,分配成功

设备独立性

用户程序使用逻辑设备名请求设备,系统通过逻辑设备表(LUT) 将逻辑设备名映射到物理设备。这就像你在餐厅只说"来一杯美式",至于用哪台咖啡机做的,你不关心——逻辑设备名就是那杯"美式"。

概念说明
逻辑设备名用户使用的设备标识(如 "/dev/printer")
物理设备名设备的真实标识
LUT逻辑设备名 → 物理设备名 + 驱动程序入口

好处:更换物理设备时,用户程序不需要修改。

考研高频考点

  • 🔥🔥 设备分配的四张表(SDT/DCT/COCT/CHCT)
  • 🔥 设备独立性(逻辑设备名 → 物理设备名)
  • 🔥 安全分配 vs 不安全分配

分配机制能防止冲突,但对于打印机这种独占设备,排队等待太浪费时间。下一篇来看 SPOOLing 如何把独占设备"变成"共享设备。

真题练习

相关真题(2题)

2021Q31选择题2分

设备独立性:更换物理设备后不需要修改应用程序

2009Q32选择题2分

设备独立性:程序员使用逻辑设备名访问设备