当前位置: 首页 > java >正文

【计算机组成原理】SPOOLing技术

SPOOLing技术

关键点内容
核心思想通过输入/输出井虚拟化独占设备,实现共享,即让多个作业共享一台独占设备
依赖条件1. 外存(井文件)
2. 多道程序设计
虚拟实现多道程序技术+磁盘缓冲
数据流方向输入设备 → 输入井 → CPU → 输出井 → 输出设备
用户权限仅操作内存缓冲区的数据读写,设备与井的传输由系统OS后台进程管理。
典型应用打印机共享,批量作业处理,磁带机操作
不适合应用不适用于交互式I/O(如键盘输入),仅适合批处理作业
对比缓冲技术SPOOLing持久化到磁盘,缓冲仅暂存于内存
  1. 输入/输出井:本质是磁盘缓冲必须依赖外存(如硬盘)
  2. 输入/输出进程:本质是后台进程,负责设备与井之间的数据传输(SPOOLing技术/系统控制,用户不感知)。由操作系统内核管理,用户无权直接干预
  3. 井管理程序就是用户进程,只负责自己的缓冲区。
  4. 目标:空间换时间,用户与物理设备解耦,传输对用户透明。
  5. 请求队列:多个用户作业共享设备时的排队机制(如打印队列)。排队可能调度:FIFO、优先级。
  6. 外围控制机将 低速IO设备上数据 传到 高速磁盘上:外围控制机是专门管理低速I/O设备(如打印机、卡片阅读器)与高速磁盘(SPOOLing缓冲区)之间数据传输的硬件控制器或专用处理机。它的工作有:
  • 数据中转:将低速设备的数据预先传输到磁盘(输入井)或从磁盘(输出井)传回设备。
  • 调度管理:协调多台I/O设备的并发操作,避免主机等待。
  • 缓冲机制:通过磁盘缓冲实现速度匹配(低速设备vs高速CPU/磁盘)。
  1. 与缓冲技术的区别:
  • 缓冲(Buffer):仅解决速度差异(如CPU vs 内存),数据不持久
  • SPOOLing:解决设备独占性,数据持久化到磁盘(井文件)。
  1. 性能影响:
  • 优点:提高I/O速度、减少空闲时间、支持多作业并发。
  • 缺点:占用额外磁盘空间、增加系统复杂度。
  1. 与DMA的对比:
对比项SPOOLingDMA (Direct Memory Access)
控制主体操作系统(软件)DMA 控制器(硬件)
数据目标磁盘(输入/输出井)内存
速度匹配解决低速设备与 CPU 的矛盾解决高速设备与内存的矛盾
传输单位文件/作业级数据块级(如磁盘扇区)
CPU 干预需要调度和管理进程传输期间完全不需要 CPU 参与
典型应用打印机共享、批处理作业磁盘、网卡、显卡等高速设备
依赖条件需要多道程序设计和外存需要 DMA 控制器和总线支持
  1. 与传统IO的对比:
特性SPOOLing 系统传统 I/O 方式
设备共享性虚拟共享(多作业并发使用)独占(单作业独占设备)
CPU 利用率高(CPU 不等待 I/O)低(CPU 需等待 I/O 完成)
用户控制层级用户仅控制内存缓冲区,设备传输由系统管理用户直接控制设备
依赖技术多道程序设计 + 外存支持无特殊要求
数据持久性数据暂存于磁盘(井文件)数据不持久
适用场景打印机、磁带机等独占设备简单交互式 I/O
http://www.xdnf.cn/news/11989.html

相关文章:

  • PowerBI企业运营分析—全动态盈亏平衡分析
  • AI IDE 正式上线!通义灵码开箱即用
  • 驱动:字符设备驱动注册、读写实操
  • 用OpenNI2获取奥比中光Astra Pro输出的深度图(win,linux arm64平台)
  • React从基础入门到高级实战:React 高级主题 - 测试进阶:从单元测试到端到端测试的全面指南
  • PWM 相关知识整理
  • 【大模型:知识图谱】--4.neo4j数据库管理(cypher语法1)
  • 振动力学:欧拉-伯努利梁的弯曲振动(考虑轴向力作用)
  • Qt Quick快速入门笔记
  • 国产三维CAD皇冠CAD在「金属压力容器制造」建模教程:蒸汽锅炉
  • 音乐播放器小程序设计与实现 – 小程序源码分享
  • typescript中的type如何使用
  • gitlab rss订阅失败
  • LeetCode 3226.使两个整数相等的位更改次数
  • SkyWalking架构深度解析:分布式系统监控的利器
  • Docker容器化的文件系统隔离机制解析
  • 解决com.jcraft.jsch.JSchException: Algorithm negotiation fail
  • CppCon 2015 学习:Beyond Sanitizers
  • 全角转半角函数(APP)
  • Viggle:开启视频人物替换新纪元
  • 书籍转圈打印矩阵(8)0604
  • Reids 如何处理缓存穿透、缓存击穿、缓存雪崩问题?
  • 使用ArcPy进行栅格数据分析
  • 麒麟+ARM架构安装mysql8的操作指南
  • 各个布局的区别以及示例
  • Sql Server 中常用语句
  • 计算机系统结构-第五章-目录式协议
  • psycopg2-binary、pgvector、 SQLAlchemy、 PostgreSQL四者的关系
  • 【无人机】无人机UAV、穿越机FPV的概念介绍,机型与工具,证书与规定
  • JavaScript性能优化实战:深入探讨JavaScript性能瓶颈与优化技巧