常静
一 问题的提出
慢速独占设备,如行式打印机,采用静态分配方式是不利于提高系统效率的。首先,占有这些设备的作业不能有效充分地利用它们。这样的设备在作业执行期间,往往只有一部分,甚至很少一部分时间在工作,其余时间均处于空闲状态。其次,浙西设备分配给一个作业以后,再有申请这类设备的作业将被拒绝接受。例如,一个系统拥有两台打印机,它就难于接受4个要求使用打印机的作业同时执行,而占用打印机的作业却又在占有它的大部分时间里让它闲着。另外,这类慢速设备联机传输大大延长了作业的执行时间。为此,现代操作系统都提供虚拟设备的功能来解决这些问题。
早期操作脱机外围设备时使用一台外围计算机,它的功能是以最大速度从慢速设备如读卡机上读取信息并记录到输入磁带上。然后,把包含有输入信息的磁带人工移动到主处理机上。在多道程序环境下,可让作业从磁带上读取各自的数据,运行的结果信息写入到输出磁带上。最后,把输出磁带移动到另一台外围计算机上,其任务是以最大速度读出信息并从打印机上输出。如图所示:
完成上述输入和输出的任务的计算机叫外围计算机,因为它不进行计算,只实现把信息从一台外围设备传送到另一台外围设备上。这种操作独立于主机处理,而不在主处理机的直接控制下进行,所以,称作脱机外围设备操作。脱机外围设备把独占使用的设备转化为可共享的设备,在一定程度上提高了效率。但却带来了若干新的问题:
(1)增加了外围计算机,不能充分发挥这些计算机的功效;
(2)增加了操作员的手工操作,在主处理机和外围处理机之间要来回装上和取下输入输出卷,这种手工操作出错机会多,效率低;
(3)不易实现优先级调度,不同批次中的作业无法搭配运行。
现代计算机有较强的并行操作能力,处理器在执行计算机的同时也可进行联机外围设备操作,可以使用一台计算机来完成上述三台计算机实现的功能。操作系统将大批信息从输入设备上预先输入到磁盘的输入缓冲区中暂时保存,这种方式称为“预输入”。作业使用数据时不必再启动输入设备,而且只要从磁盘的输入缓冲区域中读入。类似地,作业执行中不必直接启动输出设备输出数据,而只要将作业的输出数据暂时保存到磁盘的输出缓冲区中,在作业执行完毕后,由操作系统组织信息成批输出。这种方式称为“缓输出”。这样一来设备的利用率提高了,其次,作业执行中不再和低速的设备联系,而直接从磁盘的输入缓冲区获得输入数据,且只要把输出信息写到磁盘的输出缓冲区就认为输出结束了,也就减少了作业等待输入输出的时间,从而缩短了作业全部的执行时间。此外,还能增加多道程序的数量,增加作业调度的灵活性等优点。
操作系统提供了外围设备联机同时操作功能后,系统的效率会有很大提高。与脱机外围设备操作相比,辅助存储器上的输入和输出换种区域相当于输入磁盘和输出磁盘,预输入和缓输出程序完成了外围计算机做的工作。联机的同时进行外围设备操作又称作假脱机操作,采用这种技术后使得每个作业感到各自拥有独占使用的设备若干台。例如,虽然系统只有两台打印机,但是可使处理机中的5个作业都感到各自拥有一台速度如同磁盘一样快的打印机,这种技术为操作系统提供了虚拟设备。SPOOLING就是用一类物理设备模拟另一类物理设备的技术,是使独占使用的设备变成可共享设备的技术,也是一种速度匹配技术。
二 SPOOLING技术
SPOOLING即外部设备联机并行操作,它是关于低速输入输出设备与计算机主存交换信息的一种技术,通常称为“假脱机技术”,其核心思想是以联机的方式得到脱机的效果。
字符设备与主机内存交换信息可以有两种基本方式,即脱机方式和联机方式。所谓联机方式,就是一般字符直接与内存交换信息。这种交换信息方式的缺点是由于字符设备传送速度慢,当一个任务要求从外设上输入信息时,往往要“等候”很长时间;其次,由于字符设备本质上是顺序存取的独占设备,因此,在一个任务的信息未传输完之前,别的任务不能进行输入或输出,这就降低了整个系统的并行处理能力。
所谓脱机方式,就是主机并未与字符设备直接相连,先使用一台外围计算机把字符设备上的信息输入到块设备上(磁盘或磁带等),然后把块设备与主机连上,主机再从块设备上输入它所需要的信息。这种输入方式的特点是可以提高输入的并行度。由于块设备是多个进程可以“同时”存取的共享设备,把用户对字符设备的I/O转换成对块设备的存取可大大提高整个系统并发执行的程度。这种信息交换方式的缺点是需要人工干预,因为块设备与字符设备、主机之间的装卸都要人工来进行,这就会降低系统的平均运行速度,而且容易出差错和损坏设备。
SPOOLING技术是对上述两种信息传输方式的综合,它取两者的长处,而避免两者的短处,以联机的输入输出方式,获得了脱机的输入输出优点,所以SPOOLING技术有时也叫“假脱机技术”。SPOOLING技术可将一台独占设备改造成共享设备。
SPOOLING技术实际上是一种外围设备同时联机操作技术,又称为排队转储技术。它在输入和输出之间增加了“输入井”和“输出井”的排队转储环节,以消除用户的“联机”等待时间。在系统输入模块收到作业输入请求信号后,输入管理模块中的读过程负责将信息从输入装置中读入缓冲区。当缓冲区满时,由写过程将信息从缓冲区写到外存的输入井中,读过程和写过程反复循环,直到一个作业输入完毕。当读过程读到一个硬件结束标志之后,系统再次驱动写过程把最后一批信息写入外存输入井并调用中断处理程序结束该次输入。然后,系统为该作业建立作业控制块,从而使输入井中的作业进入作业等待队列,等待作业调度程序选中后进入内存运行。系统在管理输入井过程中可以“不断”读入输入的作业,直到输入结束或输入井满而暂停。若系统的某台行式打印机采用了虚拟设备技术,那么如果有进程要求对它打印输出时,SPOOLING系统并不是将这台打印机直接分配给进程,而是在共享设备(磁盘)上为其分配一块存储空间,进程的输出数据以文件形式存放。各进程的数据输出文件形成了一个输出队列,由SPOOLING输出系统控制这台打印机进程,依次将队列中的输出文件实际打印输出。在SPOOLING系统中,实际上并没有为任何进程分配设备,而只是在输入井和输出井中为进程分配一存储区和建立一张I/O请求表。这样,便把独占设备改造为共享设备。
将一台独享打印机改造为可供多个用户共享大打印机,是应用SPOOLING技术的典型实例。具体做法是:系统对于用户的打印输出,但并不真正把打印机分配该用户进程,而是先在输出井中申请一个空闲盘块区,并将要打印的数据送入其中;然后为用户申请并填写请求打印表,将该表挂到请求打印队列上。若打印机空闲,输出程序从请求打印队列首取表,将要打印的数据从输出井传送到内存缓冲区,再进行打印,直到打印队列为空。图给出了SPOOLING系统的组成和结构。
SPOOLING技术的特点:
(1)提高了I/O速度。从对低速I/O设备进行的I/O操作变为对输入井或输出井的操作,如同脱机操作一样,提高了I/O速度,缓和了CPU与低速I/O设备速度不匹配的矛盾。
(2)设备并没有分配给任何进程。在输入井或输出井中,分配给进程的是一块存储去和一张I/O请求表。
(3)实现了虚拟设备功能。多个进程同时使用一独享设备,而对每一进程而言,都认为自己独占这一设备,不过,该设备是逻辑上的设备。
SPOOLING除了一种速度匹配技术外,也是一种虚拟设备技术。用一种物理设备模拟另一类物理设备,使各作业在执行期间只使用虚拟的设备,而不是直接使用物理的独占设备。这种技术可使独占的设备变成可共享的设备,使得设备的利用率和系统效率都能得到提高。
时间:Dec 11, 2012 4:10:00 PM
录入者:冯春苑