Appearance
假脱机技术(SPOOLing)
考情分析
SPOOLing 技术的原理和共享打印机的实现是选择题高频考点。🔥🔥 中频。
打印机一次只能给一个人打,10 个人同时提交打印任务难道要排队干等?SPOOLing 就是 OS 给出的解法:先收着,后台慢慢印。
SPOOLing 的概念
SPOOLing(Simultaneous Peripheral Operations On-Line):假脱机技术,利用磁盘作为缓冲,将独占设备改造为共享设备的技术。
核心思想:在磁盘上开辟输入/输出井,用软件模拟脱机 I/O 的效果。
SPOOLing 系统的组成
| 组件 | 说明 |
|---|---|
| 输入井 | 磁盘上模拟输入设备的区域,暂存输入数据 |
| 输出井 | 磁盘上模拟输出设备的区域,暂存输出数据 |
| 输入缓冲区 | 内存中的缓冲,用于输入设备→输入井的传输 |
| 输出缓冲区 | 内存中的缓冲,用于输出井→输出设备的传输 |
| 输入进程 | 负责将数据从输入设备送到输入井 |
| 输出进程 | 负责将数据从输出井送到输出设备 |
共享打印机——SPOOLing 的经典应用
打印机是典型的独占设备,一次只能为一个进程服务。通过 SPOOLing,多个进程可以"同时"使用打印机——就像餐厅的取号系统,虽然只有一个厨房,但每个客人都觉得自己有"专属厨师"在做菜:
工作过程
- 用户进程调用打印请求 → SPOOLing 系统将打印数据写入输出井
- 用户进程认为打印已完成,继续执行(实际上还没真正打印)
- 输出进程在后台按顺序从输出井取出数据,送到打印机打印
关键:独占 → 共享
| 没有 SPOOLing | 有 SPOOLing |
|---|---|
| 进程请求打印机 → 独占 → 其他进程等待 | 进程请求打印 → 数据写入磁盘 → 立即返回 |
| 打印机是独占设备 | 打印机变成了"共享"设备 |
| 可能导致死锁 | 不会因打印机导致死锁 |
SPOOLing 与脱机技术的关系
| 比较 | 脱机技术 | SPOOLing |
|---|---|---|
| 实现方式 | 专用外围机 + 磁带 | 软件实现 + 磁盘 |
| 运行时机 | 主机运行前/后 | 与主机同时运行 |
| 本质 | 硬件层面 | 软件模拟脱机效果 |
考研高频考点
- 🔥🔥🔥 SPOOLing 将独占设备改造为共享设备
- 🔥🔥 共享打印机的实现原理(输出井 + 输出进程)
- 🔥🔥 SPOOLing 系统的组成(输入/输出井、缓冲区、输入/输出进程)
- 🔥 SPOOLing 是用软件模拟脱机技术
SPOOLing 在应用层面解决了独占设备的共享问题,而驱动程序才是真正和硬件打交道的那层。下一篇来看设备驱动程序接口的设计。