SPOOLing技术的再思考

来源:互联网 发布:windows git 版本升级 编辑:程序博客网 时间:2024/05/21 06:20

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项是错误的,因为输入输出进程是系统体用的,不是用户作业控制设备,系统提供了输入输出的进程模拟控制。

0 0
原创粉丝点击