为了缓和CPU的高速性与I/O设备低速性间的矛盾而引入了脱机输入、输出技术。该技术是利用专门的外围控制机,将低速I/O设备上的数据传送到高速磁盘上;或者相反。
事实上,当系统中引入了多道程序技术后,完全可以利用其中的一道程序,来模拟脱机输入时的外围控制机的功能,把低速I/O设备上的数据传送到高速磁盘上;再用另一道程序来模拟脱机输出时外围控制机的功能,把数据从磁盘上传送到低速输出设备上。这样,便可在主机的直接控制下,实现脱机输入、输出功能。
此时的外围操作与CPU对数据的处理同时进行,我们把这种在联机情况下实现的同时外围操作称为SPOOLing,或称为假脱机操作。
通过SPOOLing技术可将一台物理I/O设备虚拟为多台逻辑I/O设备,允许多个用户共享一台物理I/O设备。
SPOOLing技术是对脱机输入、输出系统的模拟。相应地,SPOOLing系统必须建立在具有多道程序功能的操作系统上,而且还应有高速随机外存(通常是磁盘)的支持。
 
SPOOLing系统主要有以下三部分:
  • 输入井和输出井。
这是在磁盘上开辟的两个大存储空间。用高速的磁盘设备来模拟慢速的字符设备,缩短进程在内存中的驻留时间。
井是用作缓冲的存储区域:输入井是模拟脱机输入时的慢速设备,用于暂存I/O设备输入的数据;输出井是模拟脱机输出时的慢速设备,用于暂存用户程序的输出数据。
井管理程序:控制作业和井之间的数据交换(实际上是I/O重定向)
输入输出井中的数据一般以文件的形式组织管理,这些文件称之为井文件。
井文件空间被划分为等长的物理块,每块用于存放一条或多条逻辑记录。可采用两种方式存放作业的数据信息:
(1)链接方式:输入/输出信息被组织成输入/输出队列链接文件,文件的第一块位置登记在输入表/输出表中。数据可以不连续存放,文件空间利用率高。
(2)计算方式:直接计算出文件在磁盘中的位置
  • 输入缓冲区和输出缓冲区。
为了缓和CPU和磁盘之间速度不匹配的矛盾,在内存中要开辟两个缓冲区:输入缓冲区和输出缓冲区。输入缓冲区用于暂存由输入设备送来的数据,以后再传送到输入井。输出缓冲区用于暂存从输出井送来的数据,以后再传送给输出设备。
  • 输入进程SPi和输出进程SPo
这里利用两个进程来模拟脱机I/O时的外围控制机。
预输入程序的进程SPi模拟脱机输入时的外围控制机,将用户要求的数据从输入机通过输入缓冲区再送到输入井,当CPU需要输入数据时,不必再启动输入设备,直接从输入井读入内存;
缓输出程序的进程SPo模拟脱机输出时的外围控制机,把用户要求输出的数据先从内存送到输出井,待输出设备空闲时,再将输出井中的数据经过输出缓冲区送到输出设备上。
进程运行过程中只从输入井读入数据,只向输出井输出数据,使得全部I/O都基于磁盘,以加快进程周转,提高系统吞吐量。这样不仅设备利用率提高,作业的运行时间也会缩短,每个作业都感觉各自拥有所需的独占设备。
   
SPOOLing技术使用示例:
  • 使用一类物理设备来模拟另一种物理设备,如内存卡模拟磁盘、块设备模拟字符设备、输入输出重定向
  • 打印机SPOOLing守护进程
打印机是经常要用到的输出设备,属于独占设备。如果用户进程通过打开打印机的设备文件来申请和使用打印机,往往会造成该进程打开设备文件后长达数小时不用,但其他进程又无法使用打印机。
利用SPOOLing技术,可将之改造为一台可供多个用户共享的设备,从而提高设备的利用率,也方便了用户。共享打印机技术已被广泛地用于多用户系统和局域网中。当用户进程请求打印输出时,SPOOLing系统同意为它打印输出,但并不真正立即把打印机分配给该用户进程,而只为它做两件事:
1)由输出进程在输出井中为之申请一个空闲磁盘块区,并将要打印的数据送入其中。即,打印文件前,用户进程先产生完整的待输出文件,并存放在SPOOL打印目录下。
2)输出进程再为用户进程申请一张空白的用户请求打印表,并将用户的打印要求填入其中,再将该表挂到请求打印队列上。如果还有进程要求打印输出,系统仍可接受该请求,也同样为该进程做上述两件事。
打印机守护进程是唯一有特权使用打印机设备的进程,如果打印机空闲,启动守护进程,打印待输出文件。此时输出进程将从请求打印队列的队首取出一张请求打印表,根据表中的要求将要打印的数据从输出井传送到内存缓冲区,再由打印机进行打印。打印完后,输出进程再查看请求打印队列中是否还有等待打印的请求表。若有,又取出队列中的第一张表,并根据其中的要求进行打印,如此下去,直至请求打印队列为空,输出进程才将自己阻塞起来。仅当下次再有打印请求时,输出进程才被唤醒。
  • 网络通信SPOOLing守护进程
在网上传输文件常使用SPOOLing守护进程,发送文件之前现将其放在特定的网络SPOOLing目录下,后由网络通信守护进程将其取出并发送出去。
这种文件传送方式的用途之一是因特网电子邮件系统,用户使用类似send的程序接收所要发送的信件并将其送入固定的电子邮件SPOOL目录下等待以后发送,整个电子邮件系统在操作系统之外作为一种应用程序运行。
 

 
在多道批处理系统中,我们把对一个作业的加工处理过程抽象成作业管理的过程,
作业说明语言:一种作业控制语言,用户通过它描述对一个作业具体的加工处理方式。这种加工处理方式被抽象为作业说明书。
作业说明书:刻画具体作业的控制方式。作业说明书和代码数据一起提交给操作系统,构成作业。
系统拥有一张作业表用来登记进入系统的所有作业的JCB,包括:作业名、作业状态、预输入表位置、缓输出表位置。
预输入表、缓输出表用来登记作业各输入输出文件的情况,包括设备类、文件名、信息长度、存放位置
作业在其生命周期中处于四个状态,可通过作业表的状态项指示:输入状态(预输入)、收容状态(空闲)、执行状态(可以从输入井读数据或向输出井写数据)、完成状态(缓输出)
当一个作业建立之后,首先进入输入状态,SPOOLing系统的预输入程序将控制作业预输入相关信息进入输入井。
预输入完成后作业进入收容状态,进入后备状态的作业具备了构成进程进行运行的条件。此时要通过作业调度程序进行选择,从完成了预输入的收容状态作业中,选择作业进入执行状态运行,构成进程(前提是资源充足)。作业调度算法包括优先数、短作业、响应比、设备搭配等。
执行时通过井管理程序,直接与输入井输出井交互,完成进程的执行。
作业进程结束时,数据有可能还没有完全输入到慢速的输出设备上,缓输出程序可以控制完成状态的作业实现输出从而完成整个作业。

操作系统-I/O(3)SPOOLing技术的更多相关文章

  1. 转 SPOOLING技术——操作系统

    传送门 SPOOLING技术——操作系统 SPOOLING技术(Simultaneous Peripheral Operating On Line) 同时联机外围操作技术,它是关于慢速字符设备如何与计 ...

  2. Spooling技术

    转自https://blog.csdn.net/weixin_42229896/article/details/80736517   假脱机的概念 SPOOLing技术:利用高速共享设备(通常是磁鼓或 ...

  3. 操作系统IO之零拷贝技术

    磁盘可以说是计算机系统最慢的硬件之一,读写速度相差内存 10 倍以上,所以针对优化磁盘的技术非常的多,比如零拷贝.直接 I/O.异步 I/O 等等,这些优化的目的就是为了提高系统的吞吐量,另外操作系统 ...

  4. UDP代码编写、操作系统发展史、多道技术、进程理论与代码层面创建、进程join方法与进程对象方法

    昨日内容回顾 socket基本使用 # 内置的模块 import socket s = socket.socket() # 默认是TCP协议 也可以切换为UDP协议 s.bind((ip,port)) ...

  5. 3、网络并发编程--udp代码、操作系统发展史、多道技术、进程理论

    昨日内容回顾 socket基本使用 # 内置的模块 import socket s = socket.socket() # 默认是TCP协议 也可以切换为UDP协议 s.bind((ip,port)) ...

  6. [转].NET程序在windows操作系统上独立运行的技术要点

    发现一个不错的网站,转载一篇文章方便查看 转自 http://www.linuxdot.net/bbsfile-3354   ===================================== ...

  7. ******十三 ******、软设笔记【操作系统】-磁盘管理、虚设备与SPOOLing系统

    五.磁盘管理 1.磁盘的访问时间 *寻道时间Ts:把磁臂从当前位置移到指定磁道上所经历的时间 *选择延迟时间Tr:指定扇区移动到磁头下面所经历的时间. *传输时间Tt:数据从磁盘读出或向磁盘写入数据所 ...

  8. 转载文章——从HelloWorld学习操作系统

    转载地址:https://my.oschina.net/hosee/blog/673628?p=%7b%7bcurrentPage+1%7d%7d 本文就将系统性的串联起那些知识点,方便复习和回顾.本 ...

  9. 找工作---操作系统常考知识点总结【PB】

    1.进程是并发过程中程序的执行过程 2.进程的特征:结构特征.动态性.并发性.独立性.异步性 3.临界区指在每个进程中访问临界资源的那段代码 4,现在操作系统中申请资源的基本单位是进程,在CPU得到执 ...

随机推荐

  1. C#winform将dll封装到exe当中

    我们在在winform程序时经常会用到外部dll,正常情况下,我的exe运行文件旁就需要这些dll文件相伴,总感觉不爽~~特别是要把软件给别人的时候,如果DLL比较多或者没有放在同一个地方,那麻烦大了 ...

  2. Nginx配置各种响应头防止XSS,点击劫持,frame恶意攻击

    为什么要配置HTTP响应头? 不知道各位有没有被各类XSS攻击.点击劫持 (ClickJacking. frame 恶意引用等等方式骚扰过,百度联盟被封就有这些攻击的功劳在里面.为此一直都在搜寻相关防 ...

  3. mysql数据库参数详解

    1.配置参数 MySQL有两种途径途径了解其的配置参数,一个是MySQL交互模式下的命令SHOW  VARIABLES,一个使用mysqladmin variables 查询. MySQL的配置参数分 ...

  4. Java容器学习之List

    List接口继承了Collcetion接口,Collection接口又继承了超级接口Iterable,List是有序列表,实现类有ArrayList.LinkedList.Vector.Stack等. ...

  5. emwin显示汉字使用vs studio仿真和使用keil编写烧录的不同

    我用emwin是在新唐的开发板上练习的,所有我就去官网下了开发板的资料,别的开发板应该也有对应的资料,这些软件网上应该很容易搜得到 然后用GUIBuilder构建一个界面,再用FontArchitec ...

  6. HTML5+CSS3前端入门教程---从0开始通过一个商城实例手把手教你学习PC端和移动端页面开发第5章CSS盒子模型

    本教程案例在线演示 有路网PC端 有路网移动端 教程配套源码资源 教程配套源码资源 div div 可定义文档中的分区(division). div 标签可以把网页分割为独立的.不同的部分. 可以看成 ...

  7. PHP imagealphablending - 设定图像的混色模式

    imagealphablending — 设定图像的混色模式.高佣联盟 www.cgewang.com 语法 bool imagealphablending ( resource $image , b ...

  8. PHP mt_rand() 函数

    实例 生成随机数: <?phpecho(mt_rand() . "<br>");echo(mt_rand() . "<br>"); ...

  9. spring security 简介+实战

    过滤器链: 依赖: security 功能列表: 一.登录验证.权限验证 1.1 httpbasic验证 1.2form验证 建立数据需要遵循RBAC模型 用户表要参考UserDetail创建 实例类 ...

  10. CI4框架应用四 - 第一个页面

    我们来看一下CI4框架的默认页面是如何实现的. 我们先来认识一下路由文件(app\Config\Routes.php),这个文件非常重要,且功能强大,它定义了URL模式及响应处理方法,我们先看一下这个 ...