首页/操作系统/05-io/SPOOLing技术 🔗 在 Obsidian 中打开
操作系统 · 05-io

SPOOLing 技术

重要度 ⭐⭐⭐⭐ 操作系统/IO管理SPOOLing假脱机输入输出井虚拟设备
速查
SPOOLing(假脱机)= OS 用磁盘(输入/输出井)模拟独占设备井在磁盘、缓冲区在内存;打印机物理独占、逻辑共享;需要大容量磁盘支持。

速查

项目
SPOOLingSimultaneous Peripheral Operations On-Line(假脱机)
组成输入井、输出井(磁盘)+ 输入缓冲区、输出缓冲区(内存)+ 预输入/缓输出进程
核心思想用磁盘模拟独占设备,让进程互不等待
效果物理独占 → 逻辑共享

核心概念

SPOOLing 系统的组成

  • 输入井 / 输出井:位于磁盘上,暂存输入/输出数据(大容量)
  • 输入缓冲区 / 输出缓冲区:位于内存中,作为井与设备间的中转
  • 预输入进程:把输入设备的数据读入输入缓冲区,再送入输入井
  • 缓输出进程:把输出井中的数据取出,经输出缓冲区交给输出设备

以打印机为例的 SPOOLing 工作流

  1. 进程请求打印时,OS 不把设备直接分配给进程,而是先申请一个空闲缓冲区
  2. 进程把打印数据写入缓冲区,再由假脱机(缓输出)进程写入磁盘上的输出井(形成打印任务队列)
  3. 进程即可继续执行——不再等待打印机
  4. 当打印机空闲,假脱机进程从输出井队首取出任务,经输出缓冲区交给打印机打印

SPOOLing 的意义

  • 独占设备改造成共享设备(虚拟设备):打印机物理上独占,逻辑上被多个进程共享
  • 提高设备利用率系统吞吐量
  • 进程与慢速设备解耦,不必等待慢设备完成
  • 需要大容量磁盘来充当井

关键性质

部件位置作用
输入井 / 输出井磁盘暂存输入/输出数据(大容量)
输入 / 输出缓冲区内存井与设备间的数据中转
预输入进程内存(进程)设备数据 → 缓冲区 → 输入井
缓输出进程内存(进程)输出井 → 缓冲区 → 输出设备

常见考法

考法解题套路
SPOOLing 组成井(磁盘)+ 缓冲区(内存)+ 预输入/缓输出进程
井 vs 缓冲区井在磁盘、缓冲区在内存
打印流程进程 → 缓冲区 → 输出井排队 → 缓输出进程 → 打印机
设备属性变化独占 → 共享(虚拟设备)

易错点

注意
  1. 井在磁盘上,缓冲区在内存中——两者位置不同,勿混淆
  2. SPOOLing 把独占设备改造成共享设备,但设备的物理属性不变(打印机仍是独占的,只是逻辑上共享)
  3. 进程提交打印任务后立即返回,不需要等待打印机完成
  4. 「假脱机」= 用操作系统软件(预输入/缓输出进程)模拟脱机输入输出——不需要人工干预
  5. SPOOLing 需要大容量磁盘作为井的载体

核心结论

必背
  1. SPOOLing = 用磁盘井 + 内存缓冲区 + 预输入/缓输出进程,模拟独占设备的并发使用
  2. 井在磁盘、缓冲区在内存
  3. 打印机 SPOOLing:进程写缓冲区 → 输出井排队 → 缓输出进程取任务打印
  4. 效果:独占设备 → 共享设备(虚拟设备),进程不再等待慢设备
  5. 需要大容量磁盘支持

记忆卡片

SPOOLing 的全称与含义?
Simultaneous Peripheral Operations On-Line,假脱机。
井和缓冲区各在哪?
输入/输出井在磁盘,输入/输出缓冲区在内存。
SPOOLing 把独占设备变成什么?
共享设备(虚拟设备)。
进程打印时还需等打印机吗?
不需要——数据先入输出井排队,进程立即返回。
SPOOLing 的硬件前提?
大容量磁盘(充当井)。

交互动画 · 打印机 SPOOLing 流程

用户进程 内存 磁盘 进程 P1(打印请求) 进程 P2 进程 P3 输出缓冲区 缓输出进程 输入缓冲区 输出井打印任务队列 输入井 打印机(独占设备) 队首任务 → 打印机 橙=内存部件 紫=磁盘部件
点击按钮观察打印机 SPOOLing 的完整流程
进程 → 输出缓冲区 → 输出井排队 → 缓输出进程 → 打印机

相关知识点

io-device-classification device-management

↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。