缓冲技术
- 单缓冲区:初始:工作区满,缓冲区空
每块用时max(处理时间, 输入时间) + 传送时间
- 双缓冲区:先装1,1满才装2。初始:工作区空,1空,2满
每块用时max(处理时间, 传送时间) + 输入时间
- 若 处理时间 + 传送时间 < 输入时间,可使块设备连续输入
- 若 处理时间 + 传送时间 > 输入时间,可使CPU不必等设备输入
- 缓冲池:多个系统公用的缓冲区。
- 真题:
- 键盘中断(按一次触发一次中断)服务例程执行结束时,所输入的数据存放位置是:
- CPU通用寄存器:是程序处理内部暂存
- 键盘控制器数据缓冲区:它的功能是,按多个键记录手同时按了谁,比如ctrl+shift,然后整体发出
- 内核缓冲区:先做下一步处理再给用户看 √
- 用户缓冲区
- 三队列
- 空缓冲队列
- 输入队列:装满输入数据的缓冲队列
- 输出队列:装满输出数据的缓冲队列
- 四工作缓冲区
- 收容输入工作缓冲区
- 提取输入工作缓冲区
- 收容输出工作缓冲区
- 提取输出工作缓冲区
- 三队列+四区工作流程:
- 当输入进程要输入数据,从空缓冲队列首部取一,作为收容输入放入数据,装满后挂到输入队列队尾。
- 当计算进程要使用数据,从输入队列首部取一,作为提取输入拿走数据,用完后挂到空缓冲队列队尾。
- 当计算进程要输出数据,从空缓冲队列首部取一,作为收容输出放入数据,装满后挂到输出队列队尾。
- 当输出进程要输出数据,从输出队列首部取一,作为提取输出拿走数据,用完后挂到空缓冲队列队尾。
SPOOLing技术
关键点 | 内容 |
---|---|
核心思想 | 通过输入/输出井虚拟化独占设备,实现共享,即让多个作业共享一台独占设备 |
依赖条件 | 1. 外存(井文件) 2. 多道程序设计 |
虚拟实现 | 多道程序技术+磁盘缓冲 |
数据流方向 | 输入设备 → 输入井 → CPU → 输出井 → 输出设备 |
用户权限 | 仅操作内存缓冲区的数据读写,设备与井的传输由系统OS后台进程管理。 |
典型应用 | 打印机共享,批量作业处理,磁带机操作 |
不适合应用 | 不适用于交互式I/O(如键盘输入),仅适合批处理作业 |
对比缓冲技术 | SPOOLing持久化到磁盘,缓冲仅暂存于内存 |
- 输入/输出井:本质是磁盘缓冲,必须依赖外存(如硬盘)
- 输入/输出进程:本质是后台进程,负责设备与井之间的数据传输(SPOOLing技术/系统控制,用户不感知)。由操作系统内核管理,用户无权直接干预。
- 井管理程序就是用户进程,只负责自己的缓冲区。
- 目标:空间换时间,用户与物理设备解耦,传输对用户透明。
- 请求队列:多个用户作业共享设备时的排队机制(如打印队列)。排队可能调度:FIFO、优先级。
- 外围控制机将 低速IO设备上数据 传到 高速磁盘上:外围控制机是专门管理低速I/O设备(如打印机、卡片阅读器)与高速磁盘(SPOOLing缓冲区)之间数据传输的硬件控制器或专用处理机。它的工作有:
- 数据中转:将低速设备的数据预先传输到磁盘(输入井)或从磁盘(输出井)传回设备。
- 调度管理:协调多台I/O设备的并发操作,避免主机等待。
- 缓冲机制:通过磁盘缓冲实现速度匹配(低速设备vs高速CPU/磁盘)。
- 与缓冲技术的区别:
- 缓冲(Buffer):仅解决速度差异(如CPU vs 内存),数据不持久。
- SPOOLing:解决设备独占性,数据持久化到磁盘(井文件)。
- 性能影响:
- 优点:提高I/O速度、减少空闲时间、支持多作业并发。
- 缺点:占用额外磁盘空间、增加系统复杂度。
- 与DMA的对比:
对比项 | SPOOLing | DMA (Direct Memory Access) |
---|---|---|
控制主体 | 操作系统(软件) | DMA 控制器(硬件) |
数据目标 | 磁盘(输入/输出井) | 内存 |
速度匹配 | 解决低速设备与 CPU 的矛盾 | 解决高速设备与内存的矛盾 |
传输单位 | 文件/作业级 | 数据块级(如磁盘扇区) |
CPU 干预 | 需要调度和管理进程 | 传输期间完全不需要 CPU 参与 |
典型应用 | 打印机共享、批处理作业 | 磁盘、网卡、显卡等高速设备 |
依赖条件 | 需要多道程序设计和外存 | 需要 DMA 控制器和总线支持 |
- 与传统IO的对比:
特性 | SPOOLing 系统 | 传统 I/O 方式 |
---|---|---|
设备共享性 | 虚拟共享(多作业并发使用) | 独占(单作业独占设备) |
CPU 利用率 | 高(CPU 不等待 I/O) | 低(CPU 需等待 I/O 完成) |
用户控制层级 | 用户仅控制内存缓冲区,设备传输由系统管理 | 用户直接控制设备 |
依赖技术 | 多道程序设计 + 外存支持 | 无特殊要求 |
数据持久性 | 数据暂存于磁盘(井文件) | 数据不持久 |
适用场景 | 打印机、磁带机等独占设备 | 简单交互式 I/O |
- 做题
对于SPOOLing技术的描述,错误的是:
A、 只能在多任务操作系统上使用
B、 可以将物理上的独占设备抽象成逻辑上的共享设备
C、 输出数据由输出进程送入输出井中保存
D、 输入数据由输入进程送入输入井中保存
根据SPOOLing技术的工作原理和特点,我们分析各选项:
正确答案:AC
详细解析:
选项 | 分析 | 结论 |
---|---|---|
A | SPOOLing技术可以在单任务系统(如早期批处理系统)上实现,并非必须多任务环境 | 错误 |
B | 正确描述,通过输入/输出井实现物理独占设备→逻辑共享设备的转换 | 正确 |
C | 输出方向应为:用户进程→输出井→输出设备(选项描述反了) | 错误 |
D | 输入方向正确:输入设备→输入井→用户进程 | 正确 |
关键点说明:
SPOOLing核心组件:
- 输入井/输出井(磁盘空间)
- 输入/输出进程(后台守护进程)
- 设备分配表(记录虚拟-物理映射)
技术本质图解: