提示:在写这个博客的时候小编更加的觉得计算机基础知识的重要性了,而且对计算机的整个发展历程和计算机的底层工作原理特别感兴趣
脱机I/O方式和假脱机系统
- 一、脱机I/O方式
- 二、假脱机系统
- 1、假脱机技术(SPOOLing, simulataneaus peripheral operating online)
- 2、脱机系统的组成
- 3、假脱机系统的特点
- 4、假脱机打印系统
一、脱机I/O方式
- 为了解决人机矛盾以及 CPU 和 I/O设备之间速度不匹配的矛盾,20世纪50年代末出现了脱机I/O技术。
- 该技术是事先将装有用户程序和数据的纸带(卡) 装入纸带输入机,在一台外围机的控制下,把纸带上的程序和数据输入磁带。当CPU需要这些程序和数据时,再从磁带上将它们高速地调入内存。
- 当CPU需要输出时,可先由CPU把数据直接从内存高速地送到磁带上,然后在另一台外围机的控制下,将磁带上的结果通过相应的输出设备输出。
- 由于程序和数据的输入和输出都是在外围机的控制下完成的(它们都是在脱离主机的情况下进行的),故称为脱机I/O方式。
- 把在主机的直接控制下进行I/O的方式,称为联机I/O方式。
- 脱机I/O方式的优点:
- 减少了CPU的空闲时间。 装带、卸带以及将数据从低速I/O设备送到高速磁带上(或反之)的操作,都是在脱机情况下由外围机完成的,并不占用主机时间,因此有效减少了CPU的空闲时间。
- 提高了I/O速度。 当CPU在运行中需要输入数据时,系统是直接高速磁带上将数据输入内存的,这极大地提高了I/O速度。
二、假脱机系统
- 通过假脱机技术可以可以将一台物理I/O设备虚拟为多台逻辑I/O设备,这样就可以允许多个用户共享一台物理I/O设备。
1、假脱机技术(SPOOLing, simulataneaus peripheral operating online)
- 当系统中引入多道程序技术后,系统便完全可以利用一道程序来模拟脱机输入时的外围控制机功能,进而把低速I/O设备上的数据传送到高速磁盘上;再利用另一道程序模拟脱机输出时外围控制机的功能,把数据从磁盘传送到低速输出设备上。
- 该方式是在主机的直接控制下实现以前的脱机输入/输出功能,称为联机I/O方式。
2、脱机系统的组成
- 脱机技术是对脱机输入/脱机输出系统模拟,脱机系统建立在通道技术和多道程序技术的基础上,以高速随机外存(通常为磁盘)为后援存储器,其由四部分组成。
- 输入#和输出#。
- 这是在磁盘开辟出来的两个存储区域。
- 输入#模拟脱机输入时的磁盘,用于收容I/O设备输入的数据。
- 输出#模拟脱机输出时的磁盘,用来收容用户程序的输出数据。
- 输入#/输出#中的数据一般以文件的形式组织管理,我们把这些文件称为#文件。
- 一个文件仅存放一个进程的输入(或输出)数据,所有进程的数据输入(或输出)文件可链接成一个输入(或输出)队列。
- 输入缓冲区和输出缓冲区。
- 在内存中开辟的两个缓冲区,用于缓和CPU和磁盘之间速度不匹配的矛盾。
- 输入缓冲区用于暂存输入设备传送来的数据,之后再将其传送到输入#。
- 输出缓冲区用于暂存从输出#传送来的数据,之后再将其传送到输出设备。
- 输入进程和输出进程。
- 输入进程,也称为预输入进程,用于脱机输入时的外围控制机,将用户要求的数据从输入设备传送到输入缓冲区,再存放到输入#。当CPU须输入数据时,直接从输入#读入内存。
- 输出进程,也称为缓输出进程,用于模拟脱机输出时的外围控制机器,把用户要求输出的数据从内存传送(并存放)到输出#,待输出设备空闲时,再将输出#中的数据经输出缓冲区输出到输出设备。
- #管理程序。
- 用于控制作业与磁盘井之间信息的交换。
- 当作业执行过程中向某台设备发出启动输入或输出操作请求时,由OS调用井管理程序,由该程序控制从输入井读取信息或将信息输出至输出井。
- 输入#和输出#。
3、假脱机系统的特点
- (1)提高了I/O速度。 这里对数据所执行的IO操作,已从对低速I/O设备执行的IO操作演变为对磁盘缓冲区中的数据进行的存取操作,如同脱机输入/脱机输出一样,提高了I/O速度,缓和了CPU与低速I/O设备之间速度不匹配的矛盾。
- (2)将独占设备改造为共享设备。 在假脱机打印机系统中,实际上并没有为任何进程分配设备,而只是在磁盘缓冲区中为进程分配了一个空闲盘块和建立了一张I/O请求表。这样,便把独占设备改造成了共享设备。
- (3)实现了虚拟设备功能。宏观上,虽然多个进程在同时使用一台独占设备,但对于每个进程而言,它们都会认为自己独占了一个设备。当然,该设备只是逻辑上的设备。
4、假脱机打印系统
- 假脱机打印机系统实现了将独占设备变换为若干台对应的逻辑设备的功能。
- 假脱机打印系统的组成:
- ①磁盘缓冲区,是在磁盘上开辟的一个存储空间,用于暂存用户程序的输出数据,在该缓冲区中可以设置几个盘块队列,如空盘块队列、满盘块队列等。
- ②打印缓冲区,用于缓和CPU和磁盘之间速度不匹配的矛盾,设置在内存中,用于暂存从磁盘缓冲区发送来的数据,以后会再传送给打印设备进行打印。
- ③假脱机管理进程和假脱机打印进程。由假脱机管理进程为每个要求打印的用户数据建立一个假脱机文件,并把它放入假脱机文件队列中,由假脱机打印进程依次对队列中的文件进行打印。
- 用户进程发出打印输出请求时:
- ①在磁盘缓冲区中为之申请一个空闲盘块,并将要打印的数据放入其中;
- ②为用户进程申请一张空白的用户请求打印表,并将用户的打印要求填入其中,再将该表挂到假脱机文件队列上。
- 真正的打印输出是假脱机打印进程负责的,当打印机空闲时,该进程首先从假脱机文件队列的队首摘取一张请求打印表,然后根据表中的要求将要打印的数据由磁盘缓冲区传送到内存缓冲区,再交付打印机进行打印。一个打印任务完成后,假脱机打印进程将会再次查看假脱机文件队列,若队列非空,则重复上述工作,直至队列为空。此后,假脱机打印进程会将自己阻塞起来,仅当再次有打印请求时,其才会被重新唤醒运行。
- 由此可见,利用假脱机系统向用户提供共享打印机的概念是:对每个用户而言,系统并非即时执行其程序输出数据的真实打印操作,而只是即时将数据输出到缓冲区,这时的数据并未真正被打印,只是让用户感觉系统已为他打印;真正的打印操作,是在打印机空闲且该打印任务在等待队列中已排到队首时进行的:而且,打印操作本身也是利用CPU的一个时间片,没有使用专门的外围机。以上过程是对用户屏蔽的,即用户是不可见的。