操作系统|SPOOLing(假脱机)技术
什么是假脱机技术,它可以解决什么问题?
什么是脱机技术
要回答什么是假脱机技术,首先我们需要知道什么是脱机技术。《计算机操作系统(第四版)》写道:
为了解决人机矛盾及CPU和I/O设备之间速度不匹配的矛盾,20世纪50年代末出现了脱机I/O技术。该技术是将事先装有用户程序和数据的纸袋装入纸带输入机,在一台外围机的控制下,把纸带(卡片)上的数据(程序)输入道磁带上。当CPU需要这些程序和数据时,再从磁带上高速地调入内存。
在脱机技术加持下,程序和数据的输入输出都是在外围机的控制下完成的,也就是说,他们是在脱离主机的情况下进行的,所以称这种方式为脱机输入/输出方式。
假脱机
假脱机技术,又称SPOOLing(Simultaneous Peripheral Operation On-Line)技术,是用软件的方式模拟脱机技术。SPOOLing系统的组成如下图所示。

明确一点:要实现SPOOLing技术,必须要有多道程序技术的支持。系统会建立“输入进程”和“输出进程”。
输入进程模拟脱机输入时的外围控制机;输出进程模拟脱机输出时的外围控制机。
所以,SPOOLing技术是用软件的方式实现了数据的预输入和缓输出。
假脱机技术的实现原理
SPOOLing系统主要由以下四部分组成:
输入井和输出井
这是在磁盘上开辟出来的两个存储区域。输入井模拟脱机输入时的磁盘,用于收容I/O设备输入的数据。输出井模拟脱机输出时的磁盘,用于收容用户程序的输出数据。输入/输出井中的数据一般以文件的形式组织管理,我们把这些文件成为井文件。一个文件仅存放某一个进程的输入或者输出数据,所有进程的输入或者输出文件链接成为一个输入(或输出)队列。
输入缓冲区和输出缓冲区
这是在内存中开辟的两个缓冲区,用于缓和CPU和磁盘之间速度不匹配的矛盾。输入缓冲区用于暂存由输入设备传送的数据,之后再传送到输入井。输出缓冲器用于暂存从输出井传送的数据,之后再传送到输出设备。
输入进程和输出进程
输入进程也称预输入进程,用于模拟脱机输入时的外围控制机,将用户要求的数据从输入设备传送到输入缓冲区,再存放到输入井。当CPU需要输入设备时,直接从输入井读入内存。输出进程也称缓输出进程,用于模拟脱机输出时的外围控制机,把用户要求输入的数据从内存传送并存放到输出井,待输出设备空闲时,再将输出井中的数据经过输出缓冲区输出至输出设备上。
井管理程序
用于控制作业与磁盘之间信息的交换。当作业执行过程中向某台设备发出启动输入或输出操作请求时,由操作系统调用井管理程序,由其控制从输入井读取信息或将信息输出至输出井。
工作原理图
SPOOLing系统的工作原理如下图所示

操作系统|SPOOLing(假脱机)技术的更多相关文章
- IO软件层次结构与假脱机技术
IO软件层次结构 用户层软件->设备独立性软件->设备驱动软件->中断处理程序->硬件 用户层软件实现与用户交互的接口,用户可直接使用该层提供的,与IO操作相关的库函数对设备进 ...
- Python进阶----计算机基础知识(操作系统多道技术),进程概念, 并发概念,并行概念,多进程实现
Python进阶----计算机基础知识(操作系统多道技术),进程概念, 并发概念,并行概念,多进程实现 一丶进程基础知识 什么是程序: 程序就是一堆文件 什么是进程: 进程就是一个正在 ...
- 操作系统——IO缓存技术
一.为什么引入缓存技术 为了解决cpu速度和外部设备速度不匹配的问题. 降低了io对cpu的中断的次数.每进行一次IO设备的时间都非常长,所以把数据先放入缓冲区,再进行IO操作. 二.缓冲技术的实现 ...
- 转 SPOOLING技术——操作系统
传送门 SPOOLING技术——操作系统 SPOOLING技术(Simultaneous Peripheral Operating On Line) 同时联机外围操作技术,它是关于慢速字符设备如何与计 ...
- 假脱机服务(SPOOLing service)
1. 基本含义 SPOOLing 是 Simultaneous Peripheral(外设) Operation On-Line(联机) 的缩写,是关于慢速字符设备(慢速外设,比如打印机)如何与计算机 ...
- Spooling技术
转自https://blog.csdn.net/weixin_42229896/article/details/80736517 假脱机的概念 SPOOLing技术:利用高速共享设备(通常是磁鼓或 ...
- 【操作系统】总结五(I/O管理)
输入输出管理本章主要内容: I/O管理概述(I/O控制方式.I/O软件层次结构)和I/O核心子系统(I/O调度概念.局速缓存与缓冲区.设备分配与回收.假脱机技术(SPOOLing)). 5.1 I/O ...
- 操作系统——输入输出(I/O)管理
目录 一.I/O 管理概述 1.1 I/O 控制方式 1.2 I/O 软件层次结构 二.I/O 核心子系统 2.1 I/O 调度概念 2.2高速缓存与缓冲区 2.3设备分配与回收 2.4假脱机技术(S ...
- 3.4 目录和spooling
文件管理部分主要讲文件目录.文件目录它是用于检索文件的.文件目录它是一种文件系统实现按0存取的一种重要手段.一个文件目录它由若干个目录项组成的.每一个目录项它记录了一个文件的相关信息.这个文件信息指明 ...
- 33.python之操作系统,进程,线程
转载:https://www.cnblogs.com/yuanchenqi/articles/6248025.html 操作系统 一 为什么要有操作系统? 现代计算机系统是由一个或者多个处理器,主存, ...
随机推荐
- .NET Core应用程序每次启动后使用string.GetHashCode()方法获取到的哈希值(hash)不相同
前言 如标题所述,在ASP.NET Core应用程序中,使用string.GetHashCode()方法去获取字符串的哈希值,但每次重启这个ASP.NET Core应用程序之后,同样的字符串的哈希值( ...
- 通过 InnoSetup 美化安装界面
InnoSetup 的美化相应的帖子也比较多,但是代码不是很全...所以我专门出了这篇文章来记录下这个美化过程.废话不多说,先上个成果: 前端er们可以直接下载 vue-nw-seed 这个分支,一键 ...
- docker部署php8.0 nginx1.18 mysql5.7 dnmp环境
php8.0 nginx1.18 mysql5.7 #安装docker wget -O /etc/yum.repos.d/ali_docker-ce.repo https://mirrors.aliy ...
- 为什么SwiftUI使用struct, 限制使用class
前言 在学习SwiftUI所有的地方,视图元素都定义一个struct并实现View协议,该协议定义body变量返回View类型. 但是为什么,这里一直是指定的struct, 而不是class呢? 尝试 ...
- 开源一站式敏捷测试管理平台 itest(爱测试) 6.6.1 发布,安全升级及新增强
(一)itest 简介及更新说明 itest 开源敏捷测试管理,testOps 践行者,极简的任务管理,测试管理,缺陷管理,测试环境管理,接口测试5合1,又有丰富的统计分析.可按测试包分配测试用例执行 ...
- 算法学习笔记(45): 快速沃尔什变换 FWT
遗憾的是 math 里面一直没有很好的讲这个东西--所以这次细致说说. FWT 的本质 类似于多项式卷积中,利用 ntt 变换使得卷积 \(\to\) 点乘,fwt 也是类似的应用. 定义某种位运算 ...
- HP惠普战66电源黄灯闪烁无法充电
HP惠普战66电源黄灯闪烁无法充电 TYPE-C PD 无法充电. 解决办法:关机状态下,拔除外部设备,长按电源键30秒以释放主板静电,再插电源线可以开机.
- 《Android开发卷——自定义日期选择器(三)》
继 <Android开发卷--自定义日期选择器(一)>:http://blog.csdn.net/chillax_li/article/details/19047 ...
- Mybatis中#{}和${}的区别:
简单来说 #{} 会在将参数加上引号,例如: SELECT * FROM user WHERE username=#{username} ; 带上参数后的SQL语句即: SELECT * ...
- JVM垃圾回收器与调优参数
引言 JVM为了更有效率的对堆空间进行垃圾回收,把堆空间进行了分代,分为年轻代.老年代和永久代(在1.8版本以后,永久代已经被彻底移除了,被元空间取而代之). 当一个对象出生时,会首先选择在eden区 ...