SPOOLing技术的再思考

@(OS)

首先看什么是SPOOLing。

Simultaneous Peripheral Operation On-Line 通过这个名称基本上就可以知道很多事情。外部设备联机并行操作

总体看来,虚拟性是OS的四大特性之一:

  • 虚拟性
  • 共享性
  • 并发性
  • 异步性

最基本的特征当然是关于CPU的并发性。其他的都是锦上添花的功能,也很重要。

多道程序之所以可以并发,就是因为将CPU分时共享,虚拟为多台逻辑上的CPU了。而将相同的逻辑推演,针对外部设备,是不是也可以将一台物理的IO设备虚拟为多台逻辑IO设备,允许多个用户共享一台物理IO设备呢?

当然是可以的,这就是SPOOLing技术解决的核心。

多道程序环境下,利用多道程序中的一道或者两道程序来模拟脱机输入/输出中的外围控制机的功能,以达到“脱机”输入/输出的目的。

如果不是多道环境,则无法模拟IO的输入输出过程,就是系统无法接手IO的输入输出功能,因为单道程序环境下只能有一个进程在内存工作。

本质是让低速输入输出设备与主机交换的技术。

我用自己的理解描述如下。

普通的IO设备如果是某进程运行过程中需要的,那他就被指定到这个进程,不能再被其他的进程调用,所谓分身乏术。这样,就是对外设的一种浪费,比如打印服务,如果两个进程都需要打印机,只能等待一个进程释放打印机以后才能给第二个进程使用。也就是IO不是共享设备,是独占设备。那么这两个进程因为IO的独占性导致不能再并发。
如果两个不用IO的进程可以并发是因为CPU已经经过了改造,可以用于多道程序设计,也就是OS的灵魂特性–并发性。

现在开始改造IO设备的运行方式。

SPOOLing技术是低速输入输出设备与主机交换的一种技术,通常也称为“假脱机真联机”,他的核心思想是以联机的方式得到脱机的效果。低速设备经通道和外设在主机内存的缓冲存储器与高速设备相联,该高速设备通常是辅存。为了存放从低速设备上输入的信息,或者存放将要输出到低速设备上的信息(来自内存),在辅存分别开辟一固定区域,叫“输出井”(对输出),或者“输入井”(对输入)。简单来说就是在内存中形成缓冲区,在高级设备形成输出井和输入井,传递的时候,从低速设备传入缓冲区,再传到高速设备的输入井,再从高速设备的输出井,传到缓冲区,再传到低速设备。–百科

需要两个存储的帮助:

  • 内存

    • 输入缓冲区
    • 输出缓冲区
  • 磁盘
    • 输入井
    • 输出井

SPOOLing系统既不同于脱机方式,也不同于直接藕合方式,SPOOLing技术实际上是一种外围设备同时联机操作技术,又称为排队转储技术。它在输入和输出之间增加了“输入井”和“输出井”的排队转储环节,以消除用户的“联机”等待时间。在系统输入模块收到作业输入请求信号后,输入管理模块中的读过程负责将信息从输入装置中读入输入井缓冲区。当缓冲区满时,由写过程将信息从缓冲区写到外存的输入井中,读过程和写过程反复循环,直到一个作业输入完毕。当读过程读到一个硬件结束标志之后,系统再次驱动写过程把最后一批信息写入外存输入井并调用中断处理程序结束该次输入。然后,系统为该作业建立作业控制块,从而使输入井中的作业进入作业等待队列,等待作业调度程序选中后进入内存运行。系统在管理输入井过程中可以“不断”读入输入的作业,直到输入结束或输入井满而暂停。若系统的某台台行式打印机采用了虚拟设备技术,那么若有进程要求对它打印输出时,SPOOLing系统并不是将这台打印机直接分配给进程,而是在共享设备(磁盘)上的输出,SPOOLing存储区中为其分配一块存储空间,进程的输出数据以文件形式表示的。各进程的数据输出文件形成了一个输出队列,由输出POOLing系统控制这台打印机进程,依次将队列中的输出文件实际打印输出。在SPOOLing系统中,实际上并没有为任何进程分配,而只是在输入井和输出井中,为进程分配一存储区和建立一章I/O请求表。这样,便把独占设备改造为共享设备。 –百科

CPU可以和内存直接交互,和磁盘交互慢,因此在内存上开辟缓冲区,在磁盘上为每个进程私用的存储空间,叫作输入井和输出井

磁盘相对于内存当然是慢的,但是相对于IO,可以称作高速设备!

为了实现输入输出的控制,自然需要两个系统提供的进程,即输入进程和输出进程。这是操作系统提供的进程,不是用户作业控制设备提供。

那么当IO要输入时,就调用输入进程把IO的数据输入到内存输入缓冲区,缓冲区的特性是满了才取出,也可以根据硬件结束标志,把缓冲区的内容存到磁盘。

IO要输出时,则是把磁盘输出井中的内容先输出到输出缓冲区,再进行输出设备的操作。

掌握了这些,可以看一道题目:

(2016.31) 关于SPOOLing技术的叙述,错误的是:DD

A. 需要外存的支持
B. 需要多道程序设计技术的支持
C. 可以让多个作业共享一台独占设备
D. 由用户作业控制设备与输入/输出井之间的数据传送

分析:输入井,输出井就是在磁盘(外存)开辟的存储空间,因此需要外存的支持,A项正确。
要用输入输出进程模拟IO的输入输出控制,单道程序环境下无法满足这一点,因此我们说SPOOLing需要多道程序的支持。B项对。
C项不用说,这就是设计的目的。
D项是错误的,因为输入输出进程是系统体用的,不是用户作业控制设备,系统提供了输入输出的进程模拟控制。

SPOOLing技术的再思考相关推荐

  1. 操作系统 | 实验七 SPOOLING技术

    文章目录 一.实验目的 二.实验内容 三.数据结构 3.1 数据结构 3.2 函数以及功能 四.程序流程图 五.实验代码 六.实验结果 七.实验体会总结 一.实验目的 理解和掌握SPOOLING假脱机 ...

  2. I/O软件层次结构、I/O核心子系统以及假脱机技术(SPOOLing技术)

    一.I/O软件层次结构 (一)用户层软件 (二)设备独立性软件 主要实现的功能: ①.向上一层提供统一的接口. ②.设备的保护. 原理类似与文件保护.设备被看做是一种特殊的文件,不同用户对各个文件的访 ...

  3. Web系统开发构架再思考-前后端的完全分离

    前言 前后端完全分离其实一直是Web开发人员的梦想,也一直是我的梦想,遥想当年,无论是直接在代码里面输出HTML,还是在HTML里面嵌入各种代码,都不能让人感到满意.期间的痛苦和纠结,我想所有Web开 ...

  4. 操作系统的SPOOLING技术

    SPOOLING技术(Simultaneous Peripheral Operating On Line) 同时联机外围操作技术,它是关于慢速字符设备如何与计算机主机进行数据交换的一种技术,通常又称假 ...

  5. 操作系统之I/O管理:2、SPOOLing技术(假脱机技术)

    2.SPOOLing技术 思维导图 脱机技术 假脱机技术(SPOOLing技术) 用假脱机技术实现共享打印机 思维导图 脱机技术 1.在早期的批处理系统中,输入输出经历了这样的过程:纸带----磁带- ...

  6. 任何举动之前,先思考,思考,再思考

    任何举动之前,先思考,思考,再思考--<Windows用户态程序高效排错>之读书笔记 之所以会读<Windows用户态程序高效排错>这本书,是因为某个卖存储的技术大拿不停地给我 ...

  7. 论文解读二十七:文本行识别模型的再思考

    摘要:本文研究了两个解码器(CTC[1]和 Transformer[2])和三个编码器模块(双向LSTM[3].Self-Attention[4]和GRCL[5]),通过大量实验在广泛使用的场景和手写 ...

  8. Web系统开发构架再思考-前后端的完全分离 MVVM

    前言 前后端完全分离其实一直是Web开发人员的梦想,也一直是我的梦想,遥想当年,无论是直接在代码里面输出HTML,还是在HTML里面嵌入各种代码,都不能让人感到满意.期间的痛苦和纠结,我想所有Web开 ...

  9. 关于跨平台技术选型的思考

    关于跨平台技术选型的思考 在我们进行技术架构和技术选型的时候,我们经常犯一个错误就是,试图找一个完美的解决方案即:坑少.功能多. 但是,无数次惨痛经历仍然难以记住这个事实,就是,好的架构是需要迭代的. ...

最新文章

  1. Swift - 程序进入后台,以及应用终止时调用的方法
  2. C++ 二维数组示例 - 控制台和MFC版
  3. css什么时候用绝对定位,CSS - 使用绝对定位
  4. 《Programming in Lua 3》读书笔记(十二)
  5. 常见的几种负载均衡算法
  6. Ordering Tasks UVA - 10305(拓扑排序)
  7. nginx 负载均衡集群解决方案 healthcheck_nginx_upstreams (一)
  8. opencv 最大内接矩形_OpenCV之二值图像分析 – 寻找最大内接圆
  9. 谷歌浏览器添加扩展程序
  10. PHP获取grpc请求时间,Go gRPC进阶-超时设置(六)
  11. [C语言]排序问题--我的解答
  12. 两种办法解决外网资源下载速度过慢的问题
  13. Linux运维笔记(四)
  14. 计算机word文档基本操作,Word常用基本操作
  15. mysql关闭安全莫斯_GitHub - HalaCR7/Moss: Moss(莫斯)-Spring Cloud体系的服务治理平台,让Spring Cloud应用不再流浪!欢迎Star!...
  16. 绿色发展视域下都柳江流域水族传统生态文化研究
  17. 实现手机蓝牙解锁电脑_手机版和电脑版微信多开的实现方法
  18. 方舟linux服务器更新,方舟怎么更新服务器版本 | 手游网游页游攻略大全
  19. 加速linux开机速度 systemctl
  20. 织梦系统(DEDECMS)后台模板修改一

热门文章

  1. 自动驾驶算法-滤波器系列(七)——ESKF(error-state Kalman Filter)介绍
  2. python3画图中文乱码_matplotlib图例中文乱码?
  3. android 8.0 iso6,微信8.0.6更新了什么?IOS系统微信8.0.6版本更新详情一览[多图]
  4. mysql数据倾斜_sqoop数据倾斜解决实战
  5. osqa mysql_osqa安装出现的问题解决办法 | 学步园
  6. js深拷贝和浅拷贝对数组的影响_javaScript中的深拷贝和浅拷贝
  7. 队列和通知区别_Java多线程学习(五)——等待通知机制
  8. freebsd 自动启动服务器,教程/FreeBSD启动脚本
  9. Java String到int,Java int到String
  10. angularjs教程_AngularJS活动教程