第七章 设备管理
(Devices Management)
教学目的,
设备管理不但要管理实际 I/O操作的设备(如磁盘机、打印机),还要管理诸如设备控制器,DMA控制器、中断控制器、
I/O处理机(通道)等支持设备。设备管理包括各种设备分配、
缓冲区管理和实际物理 I/ O设备操作,通过管理达到提高设备利用率和方便用户。
教学要求:
了解设备的分类,熟悉 设备管理的目标和功能。
熟悉 程序 I/O方式、中断方式,DMA方式和通道方式四种 I/O的控制方式;掌握通道的概念,熟悉 通道类型。
熟悉 缓冲的概念,熟悉 单缓冲、双缓冲和多缓冲和缓冲池工作原理,了解 UNIX系统的缓冲技术。
了解在进行设备分配时应考虑的设备的固有属性、设备的分配算法、设备分配的安全性和设备的独立性等因素;掌握设备分配中数据结构,熟悉 设备分配的流程;掌握 SPOOLing技术概念和 SPOOLing系统的组成。
熟悉 设备处理程序的功能和处理方式,熟悉 设备处理程序的处理过程 。
(一) 设备管理的概述
( 1) I/O系统的组成:
1。微 机 I/O系统图
2。主 机 I/O系统图
(一) 设备管理的概述
( 1) 设备的分类
I/O设备的种类繁多,从 OS观点来看,其重要的性能指标有:
数据传输速率,数据的传输单位,设备的共享属性等 。
1,按传输速率分类
低速设备,指传输速率为每秒钟几个字节到数百个字节的设备 。 典型的设备有键盘,鼠标,语音的输入等;
中速设备,指传输速率在每秒钟数千个字节至数十千个字节的设备 。 典型的设备有行式打印机,激光打印机等;
高速设备,指传输速率在数百千个字节至数兆字节的设备 。
典型的设备有磁带机,磁盘机,光盘机等 。
设备的分类 -1
2.按信息交换的单位分类
块设备 ( Block Device):指以数据块为单位来组织和传送数据信息的设备。这类设备用于存储信息,有磁盘和磁带等。
它属于有结构设备。典型的块设备是磁盘,每个盘块的大小为 512B~ 4KB,磁盘设备的基本特征是:①传输速率较高,通常每秒钟为几兆位;②它是可寻址的,即可随机地读 /写任意一块;③磁盘设备的 I/O采用 DMA方式。
字符设备 ( Character Device):指以单个字符为单位来传送数据信息的设备。这类设备一般用于数据的输入和输出,
有交互式终端、打印机等。它属于无结构设备。字符设备的基本特征是:①传输速率较低;②不可寻址,即不能指定输入时的源地址或输出时的目标地址;③字符设备的 I/ O常采用中断驱动方式。
设备的分类 -2
3.按资源分配的角度分类
独占设备,指在一段时间内只允许一个用户 ( 进程 ) 访问的设备,大多数低速的 I/O设备,如用户终端,打印机等属于这类设备 。 因为独占设备属于临界资源,所以多个并发进程必须互斥地进行访问 。
共享设备,指在一段时间内允许多个进程同时访问的设备 。
显然,共享设备必须是可寻址的和可随机访问的设备 。 典型的共享设备是磁盘 。 共享设备不仅可以获得良好的设备利用率,而且是实现文件系统和数据库系统的物质基础 。
虚拟设备,指通过虚拟技术将一台独占设备变换为若干台供多个用户 ( 进程 ) 共享的逻辑设备 。 一般可以利用假脱机技术 ( SPOOLing技术 ) 实现虚拟设备 。
(2)设备管理的目标和功能
1,设备管理的目标
提高设备的利用率 。 为此,应尽量提高 CPU与 I/O设备之间的并行操作程度,主要利用的技术有:中断技术,DMA技术,通道技术,缓冲技术 。
为用户提供方便,统一的界面 。 所谓方便,是指用户能独立于具体设备的复杂物理特性之外而方便地使用设备 。 所谓统一,是指对不同的设备尽量使用统一的操作方式,例如各种字符设备用一种 I/O操作方式 。 这就要求用户操作的是简便的逻辑设备,而具体的 I/O物理设备由操作系统去实现,这种性能常常被称为设备的独立性 。
设备管理的目标和功能 -1
2,设备管理功能
设备分配 。指设备管理程序按照一定的算法把某一个 I/O设备、
及其相应的设备控制器和通道分配给某一用户(进程),对于未分配到的进程,则插入等待队列中。
缓冲区管理 。为了解决 CPU与 I/O之间速度不匹配的矛盾,在它们之间配置了缓冲区。这样 设备管理程序又要负责管理缓冲区的建立、分配和释放。
实现物理 I/O设备的操作 。对于具有通道的系统,设备管理程序根据用户提出的 I/O请求,生成相应的通道程序并提交给通道,然后用专门的通道指令启动通道,对指定的设备进行 I/O
操作,并能响应通道的中断请求。对于未设置通道的系统,
设备管理程序直接驱动设备进行 I/O操作。
(二) I/O控制方式
随着计算机技术的发展,I/O的控制方式也在不断地发展 。 一般可分为:程序 I/O方式,中断方式,DMA方式和通道方式 。 I/O的控制方式发展的目标是尽量 减少主 机对 I/O控制的干预 。
( 1) 程序 I/O(Programmed I/O)方式
在早期的计算机系统中,由于没有中断机构,处理机对 I/O
设备直接进行控制,采取程序 I/O( Programmed I/O) 方式或称为忙 -等待方式,即在 CPU向设备控制器发出一条 I/O指令启动 I/O设备进行数据传输时,要同时把状态寄存器中的忙 /闲标志 busy置为 1,然后便不断地循环测试 busy。 当
busy=l时,表示该 I/O设备尚未输入完一个字 (符 ),CPU应继续对该标志进行测试,直至 busy=0,表示该 I/O设备已将输入数据送入到 I/O控制器的数据寄存器中,于是 CPU将从数据寄存器中取出数据,送入内存的指定单元,接着,再启动去读下一个数据,并置 busy=l。
( a)程序 I/O方式的流程 ( b)中断驱动方式的流程
CPU→I/O
CPU→I/O CPU做其它事中断
I/O→CPU
I/O→CPU
未就绪 出错 出错处理 处理就绪 就绪
I/O→CPU I/O→CPU
CPU→RAM CPU→RAM
未完 未完完成 完成执行下一条 I/O指令 执行下一条 I/O指令向 I/O控制器发读命令读 I/O控制器的状态检查状态?
从 I/O控制器中读入字向内存中写入字传 送 完 毕?
向 I/O控制器发读命令读 I/O控制器的状态检查状态?
从 I/O控制器中读入字向内存中写入字传 送 完 毕?
I/O控制方式 -1
在程序 I/O方式中,由于 CPU的速度远远高于 I/O设备,导致
CPU的绝大部分时间都处于等待 I/O设备完成而循环测试之中,
造成了 CPU的极大浪费。但是它管理简单,在要求不高的场合可以被采用。
( 2)中断控制 (Interrupt-driven I/O)方式在现代计算机系统中,对 I/O设备的控制,广泛地采用中断驱动方式,即当某进程要启动某个 I/O设备时,便由 CPU向相应的设备控制器发出一条 I/O命令,然后立即返回继续执行原来的任务。设备控制器便按照该命令的要求去控制 I/O设备。此时,CPU与 I/O设备处于并行工作状态。例如,在输入时,当设备控制器收到 CPU发来的读命令后,便准备接收从相应输入设备送来的数据。一旦数据进入数据寄存器,控制器便通过控制线向 CPU发送一中断信号,由 CPU检查输入过程中是否出错,若无错,便向控制器发取走数据的信号,然后便通过控制器将数据写入指定内存单元。
I/O控制方式 -2
所以,中断驱动方式在 I/O设备输入数据的过程中,无需 CPU
干预,可以使 CPU与 I/O设备并行工作 。 仅当输完一个数据时,
才需 CPU花费极短的时间去进行中断处理 。 从而大大地提高了整个系统的资源利用率及吞吐量,特别是 CPU的利用率 。
( 3) DMA(Direct Memory Access )控制方式中断驱动 I/O方式虽然大大提高了主机的利用率,但是它以字
( 节 ) 为单位进行数据传送,每完成一个字 ( 节 ) 的传送,
控制器便要向 CPU请求一次中断 ( 做保存现场信息,恢复现场等工作 ),例如 1KB的数据块,要中断 1K次 CPU。 仍然占用了
CPU的许多时间 。 这种方式对于高速的块设备的 I/O控制显然是不适合 。 为了进一步减少 CPU对 I/O的干预,引入了直接存储器访问 ( Direct Memory Access) 控制方式 。 该方式的特点是:
1,它作为高速的外围设备与内存之间成批的数据交换,但是不对数据再做加工处理,数据传输的基本单位是数据块,I/O操作的类型比较简单 。
I/O控制方式 -3
2,它需要使用一个专门的 DMA控制器 ( DMAC) 。 DMAC中有控制,状态寄存器,传送字节计数器,内存地址寄存器和数据缓冲寄存器 。
3,它采用盗窃总线控制权的方法,由 DMAC送出内存地址和发出内存读,设备写或设备读,内存写的控制信号来完成内存与设备之间的直接数据传送,而不用 CPU的干预 。 有的 DMA传送甚至不经过
DMAC的数据缓冲寄存器的再吞吐,传输速率非常高 。
4,仅在传送一个或多个数据块的开始和结束时,才需 CPU干预,
整块数据的传送是在控制器的控制下完成的 。
可见,DMA方式较之中断驱动方式,又是成百倍地减少了 CPU对
I/O控制的干预,进一步提高了 CPU与 I/O设备的并行操作程度 。
CPU
主存
DMA控制器 I/O设备
1
2
3
4
1CPU从主存读取控制信息
2CPU把控制信息送 DMAC
3CPU执行其它指令
DMAC从主存读 /写数据
4CPU继续执行其它指令
DMAC把数据送 I/O设备
(4)I/O通道控制方式
1,I/O通道控制方式的引入虽然 DMA方式比中断驱动方式已显著地减少了 CPU的干预,
即由以字 ( 节 ) 为单位的干预减少到以数据块为单位的干预 。
但是 CPU每发出一条 I/O指令,也只能去读 ( 或写 ) 一个连续的数据块 。 而当我们需要一次去读多个离散的数据块且将它们分别传送到不同的内存区域,或者相反时,则需由 CPU分别发出多条 I/O指令及进行多次中断处理,才能完成 。
由于 DMA每次只能执行一条 I/O指令,不能满足复杂的 I/O
操作要求 。 在大,中型计算机系统中,普遍采用由专用的
I/O处理机来接受 CPU的委托,独立执行自己的通道程序来实现 I/O设备与内存之间的信息交换,这就是通道技术 。 通道技术可以进一步减少 CPU的干预,即把对一个数据块为单位的读 ( 或写 ) 的干预,减少到对一组数据块为单位的读 ( 或写 ) 的有关的控制和管理的干预 。 这样可实现 CPU,通道和
I/O设备三者之间的并行工作,从而更有效地提高了整个系统的资源利用率和运行速度 。
I/O通道控制方式 -1
2.通道程序通道是通过执行通道程序,并与设备控制器来共同实现对
I/O设备的控制。通道程序是由一系列的通道指令(或称为通道命令)所构成。通道指令与一般的机器指令不同,在每条指令中包含的信息较多,有操作码、内存地址、计数(读或写数据的字节数)、通道程序结束位 P和记录结束标志 R。
3.通道类型由于外围设备的种类较多,且其传输速率相差很大,所以通道也具有多种类型。根据信息交换方式,可以把通道分成以下三种类型:
字节多路通道 ( Byte Multiplexor Channel)
在这种通道中,通常都含有较多个( 8,16,32)非分配型子通道,每一个子通道连接一台 I/O设备。这些子通道按时间片轮转方式共享主通道。一个子通道完成一个字节的传送后,
立即让出字节多路通道(主通道),给另一个子通道使用。
它适用于连接低速或中速设备,如打印机、终端等。
I/O通道控制方式 -2
数组选择通道 ( Block Selector Channel)
这种通道虽然可以连接多台 I/O设备,但是它只有一个分配型子通道,在一段时间内只能执行一道通道程序,控制一台设备进行数据传送,其数据传送是按数组方式进行 。 即当某台设备一旦占用了该通道,就被它独占,直至该设备传送完毕释放该通道为止 。 可见,它适于连接高速设备 ( 如磁盘机,
磁带机 ),但是这种通道的利用率较低 。
数组多路通道 ( Block Multiplexor Channel)
数组选择通道虽然有很高的传输速率,但它每次只允许一个设备传输数据 。 数组多路通道是将数组选择通道的传输速率高和字节多路通道的分时并行操作的优点结合起来,形成的一种新的通道 。 它含有多个非分配型子通道,可以连接多台高,中速的外围设备,其数据传送却是按数组方式进行 。 所以这种通道既具有很高的数据传输速率,又能获得令人满意的通道利用率 。 (练习 )
(三)缓冲( Buffering )技术目前为了解决 CPU与 I/O设备间速度不匹配的矛盾,提高的 I/O
速度和设备利用率,在所有的 I/O设备与处理机 ( 内存 ) 之间,
都使用了缓冲区来交换数据 。 所以 OS必须组织和管理好这些缓冲区 。
( 1) 缓冲的引入在操作系统中,引入缓冲的主要原因,可归结为以下几点:
1。 改善 CPU与 I/O设备间速度不匹配的矛盾例如一个程序,它时而进行长时间的计算而没有输出,时而又阵发性把输出送到打印机 。 由于打印机的速度跟不上 CPU,
而使得 CPU长时间的等待 。 如果设置了缓冲区,程序输出的数据先送到缓冲区暂存,然后由打印机慢慢地输出 。 这时,CPU
不必等待,可以继续执行程序 。 实现了 CPU与 I/O设备之间的并行工作 。 事实上,凡在数据的到达速率与其离去速率不同的地方,都可设置缓冲,以缓和它们之间速度不匹配的矛盾 。
众所周知,通常的程序都是时而计算,时而输出的 。
缓冲技术 -1
2。可以减少对 CPU的中断频率,放宽对中断响应时间的限制如果 I/O操作每传送一个字节就要产生一次中断,那么设置了 n个字节的缓冲区后,则可以等到缓冲区满才产生中断,这样中断次数就减少到 1/n,而且中断响应的时间也可以相应的放宽。
3.提高 CPU和 I/ O设备之间的并行性缓冲的引入可显著提高 CPU和设备的并行操作程度,提高系统的吞吐量和设备的利用率。
缓冲技术 -2
( 2) 单缓冲( Single Buffer )
每当一个用户进程发出一个 I/O请求时,OS便在主存中为之分配一个缓冲区。例如,CPU要从磁盘上读一块数据进行计算,
先从磁盘把一块数据读入到缓冲区中,然后由 OS将缓冲区的数据传送到用户区,最后由 CPU对这一块数据进行计算,可见第一步和最后一步是可以并行执行的,这样就提高了 CPU和外设的利用率。但是对缓冲区中数据的输入和提取是串行工作的。 (如下图所示)
操作系统 用户进程输入 传送
I/O设备缓冲区 用户区缓冲技术 -3
( 3) 双缓冲 ( Double Buffer )
双缓冲工作方式基本方法是在设备输入时,先将数据输入到缓冲区 A,装满后便转向缓冲区 B。 此时 OS可以从缓冲区 A中提取数据传送到用户区,最后由 CPU对数据进行计算 。 ( 如下图所示 ) 操作系统 用户进程
C
输入 T 传送 M
I/O设备
( 4) 多缓冲 ( Circular Buffer )
双缓冲可以实现对缓冲区中数据的输入和提取,与 CPU的计算,
三者并行工作 。 所以双缓冲进一步加快了 I/O的速度,提高了设备的利用率 。 (练习 )
缓冲区 A
用户区缓冲区 B
缓冲技术 -4
当对缓冲区中数据的输入和提取的速度基本相匹配时,采用双缓冲可使两者并行工作,获得较好的效果 。 但是如果两者的速度相差甚远时,双缓冲的效果就不够理想了 。 如果增加缓冲区的个数,情况就会有所改善 。 我们可以将多个缓冲区组织成循环队列的形式 ( 如下图所示 ) 。 例如对于用作输入的循环缓冲区,通常提供给输入进程和计算进程使用,输入进程不断向空缓冲区中输入数据,计算进程则从满缓冲区中提取数据用于计算 。 生产者 -
-----消费者操作系统 用户进程输入 传送
I/O设备 ……
缓冲区 1
用户区缓冲区 2
缓冲区 N
缓冲技术 -5
( 5) 缓冲池当系统配置较多的设备时,使用专用缓冲区就要消耗大量的内存空间,且其利用率不高。为了提高缓冲区的利用率,
目前广泛使用公用缓冲池,池中的缓冲区可供多个进程共享。
对于同时用于输入 /输出的公用缓冲池,至少含有三种类型的缓冲区:空缓冲区、装满输入数据的缓冲区和装满输出数据的缓冲区。为了管理上的方便,可将相同类型的缓冲区链成一个队列,于是就形成三个队列:空缓冲区队列、输入缓冲区队列和输出缓冲区队列。
另外还应具有四种工作缓冲区:⑴用于收容输入数据的工作缓冲区( hin);⑵用于提取输入数据的工作缓冲区( sin);
⑶ 用于收容输出数据的工作缓冲区( hout);⑷用于提取输出数据的工作缓冲区( sout)。可见,缓冲区工作在收容输入、提取输入、收容输出和提取输出四种工作方式下(如下图 5所示)。
缓冲技术 -6
缓冲池收容输入 提取输入提取输出 收容输出
( 6) UNIX系统的缓冲技术
UNIX系统采用缓冲 池 技术,来平滑和加快文件信息从内存到磁盘的传输。当从磁盘上读数据时,如果数据已经在缓冲区中,则核心就直接从缓冲区中读出,而不必从盘上读;当数据不在缓冲区时,核心先把数据从磁盘传送到缓冲区,再由缓冲区读出。目的在于尽可能减少磁盘 I/O的次数,提高系统运行的速度。
hin
sout
sin
hout
用户程序缓冲技术 -7
1。 缓冲控制块在系统初始化时,核心根据内存的大小和系统性能要求分配若干个缓冲区 。 每个缓冲区由两部分组成:存放数据的内存数组 ( 一般称为缓冲区 ) 和缓冲控制块 ( 又称为缓冲首部,
用来记录缓冲区的使用情况 ) 。 缓冲区和缓冲控制块一一对应 。 系统通过缓冲控制块来实现对缓冲区的管理,保证一个盘块一次只能映射一个缓冲区 。 缓冲控制块的数据结构如下图所示 。
设备号盘块号状态指向缓冲区的指针指向散列队列的后继 buf 的指针指向散列队列的前驱 buf 的指针指向自由链的后继 buf 的指针指向自由链的前驱 buf 的指针缓冲技术 -8
其中,设备号和盘块号分别标志出文件系统和数据所在的盘块号,它们是缓冲区的唯一标志。设备号是指逻辑文件的系统号,并非物理装置号。缓冲区的大小至少与盘块的大小相等。状态项指明了该缓冲区当前的状态,如忙 /闲,数据有效性等。还有两组指针用于对缓冲池(由所有的缓冲区组成)
的分配管理。
2.缓冲池结构利用缓冲控制块的两组指针,核心把缓冲池中的缓冲区用两条双向链表环组织起来,一条是自由链,所有处于“空闲”
状态的 buf都在该链中,且只有一条。系统初始时,所有 buf都在该链上。另一条是散列队列,可以有多个队列,各队列是由具有相同散列值的 buf组成,散列值是设备和盘块号的函数。
下图所示了缓冲池的链接结构。
缓冲技术 -9
其中,实线 表示自由链,由一个自由链链头指示 。 多条虚线各表示不同的散列队列,同一行是具有同一散列值的队列,由散队列链头指示 。 每个 buf总是存在于一个散列队列中,但其位置是动态可变的 。 如果一个 buf分配给某个盘块,但当前并未使用,则该 buf能同时出现在两条链中,如下图所示 。
块号 mod 4 =0
块号 mod 4 =1
块号 mod 4 =2
块号 mod 4 =3
28 4 64
17 5
98 50
97
10
3 35 99
自由链链头缓冲技术 -9
3,缓冲区的分配和释放当进程想从指定的盘块读取数据,或把数据写到指定的盘块中时,核心要检查该块是否在缓冲区中,如果不在,则为该盘块分配一个空闲的缓冲区 。 当核心用完缓冲区后,要把它释放,链入自由链中 。
核心对缓冲区的分配是采用 LRU算法:在把一个缓冲区分给一个盘块后,核心就不能让另外的盘块使用它,直到所有其它的缓冲区最近都被用过为止,即该缓冲区是最长时间未被使用的,因此被重新分配 。 分配缓冲区有两条途径:一是从散列队列中查找;另一条是仅当在散列队列中未找到时,则从自由链上分配 。 从自由链上分配时,一般都从自由链开头摘取一个 。 当核心回收一个缓冲区时,通常把相应的 buf链入自由链的末尾 。
(四) 设备的分配在多道程序环境下,设备必须由系统分配 。 每当进程向系统提出 I/O请求时,设备分配程序按照一定的策略,把其所需的设备及其有关资源 ( 如缓冲区,控制器和通道 ) 分配给该进程 。 在分配设备时还必须考虑系统的安全性,避免发生死锁现象 。
( 1) 设备分配的策略
1,根据设备的固有属性而采取的策略
独享方式独享方式是指将一个设备分配给某进程后,便一直由它独占,直至该进程完成或释放该设备为止,系统才能将该设备分配给其它进程使用 。 这种分配方式是对独占设备采用的分配策略 。 它不仅往往造成设备利用率低,而且还会引起系统死锁 。
设备分配的策略 -1
共享方式共享方式是指将共享设备(磁盘)同时分配给多个进程使用。但是这些进程对设备的访问需进行合理的调度。
虚拟方式虚拟方式是指通过高速的共享设备,把一台慢速的以独占方式工作的物理设备改造成若干台虚拟的同类逻辑设备,这就需要引入 SPOOLing技术。虚拟设备属于逻辑设备。
2.设备分配算法( 与进程的调度算法相似)
先来先服务:当多个进程同时向某一设备提出 I/O请求时,该算法就根据对该设备提出请求的先后次序将这些进程排列成一个设备请求队列,设备分配程序把设备首先分配给队首进程。
优先级高者优先:对优先权高的进程所提出的 I/O请求赋予高优先权,在形成设备队列时,将优先级高的进程排在设备队列前面,先得到分配。而对于优先权相同的 I/O请求,则按先来先服务原则排队分配。
设备分配的策略 -2
3,设备分配中的安全性
安全分配方式每当进程发出一个 I/O请求后,便进入阻塞状态,直到其
I/O操作完成时才被唤醒 。 当它运行时不保持任何设备资源,
打破了产生死锁一个必要条件 —“请求和保持,,所以这种分配方式是安全的 。 但是这种分配算法使得 CPU与 I/O设备串行工作,设备的利用率比较低 。
不安全分配方式进程发出一个 I/O请求后仍可以继续运行,需要时还可以发第二个 I/O请求,第三个 I/O请求 。 只有当进程所请求的设备已被另一个进程占用时,进程才进入阻塞状态 。 这种分配方式是不安全,因为它可能具备,请求和保持,条件,从而可能造成系统死锁 。
设备分配的策略 -3
如第四课 图 所示进程 P1发出第一个 I/O请求,占有了资源 1后,
在继续向前推进时,又要申请资源 2;此时,进程 P2却占有了资源 2,在继续向前推进时,又要申请资源 1,从而造成系统死锁。所以,在设备分配程序中应该增加安全性检查的功能。
4.设备独立性( Device Independence)
为了提高 OS的可适应性和可扩展性,目前几乎所有的 OS都实现了设备的独立性(也称为设备无关性)。其基本思想是:
用户程序不直接使用物理设备名(或设备的物理地址),而只能使用逻辑设备名;而系统在实际执行时,将逻辑设备名转换为某个具体的物理设备名,实施 I/O操作。
为此,引入逻辑设备和物理设备两个概念。逻辑设备是实际物理设备属性的抽象,它并不限于某个具体设备。例如在
MS-DOS中,最基本的输入、输出设备(键盘和显示器)用一个公共的逻辑设备名 CON( Console—控制台),并由同一个设备驱动程序来驱动和控制;并行打印机的逻辑设备名为 PRN
或 LPTi;异步串行通讯口的逻辑设备名为 AUX或 COMi等等。
设备分配的策略 -4
总之,使用逻辑设备名是操作系统对用户程序的设备独立性的具体支持 。 设备独立性带来以下两方面的好处:
设备分配时的灵活性,当进程以逻辑设备名请求某类设备时,
如果一台设备已经分配给其它进程或正在检修,此时系统可以将其它几台相同的空闲设备中的任一台分配给该进程,只有当此类设备全部被分配完时,进程才会被阻塞 。
易于实现 I/O重定向
为了实现设备的独立性,必须在驱动程序之上设置一层软件,
称为设备独立性软件,其主要功能有以下两个方面,? 执行所有设备的公有操作;?向用户层 ( 或文件层 ) 软件提供统一的接口 。
为了实现逻辑设备名到物理设备名的映射,系统必须设置一张 逻辑设备表 LUT( Logical Unit Table),能够将应用程序中所使用的逻辑设备名映射为物理设备名,并提供该设备驱动程序的人口地址 。 (练习 )
(2)设备分配程序设备分配程序是负责向对系统提出 I/O请求的进程分配设备,及其相应的控制器和通道 。
1,设备分配中数据结构数据结构有,系统设备表 ( SDT),设备控制表 ( DCT),控制器控制表 ( COCT),通道控制表 ( CHCT) 。 每个表的具体内容如下图所示 。
在整个系统中,有一张系统设备表 ( SDT),用于记录系统中全部设备的信息 。 每个设备占一个表目,其中包括设备类型,
设备标识符,设备控制表指针及设备驱动程序的入口地址等表项 。
系统为每一个设备都配置了一张设备控制表 ( DCT),用于记录该设备的情况 。 表中除了有用于指示设备类型的字段和设备标识符字段外,还应有下列字段:
设备分配程序 -1
设备队列的队首指针:凡因请求本设备而未得到满足的进程,
其 PCB都应按照一定的策略排成一个队列,称为设备请求队列或简称为设备队列。其队首指针指向队首 PCB,在有的系统中还设置了队尾指针。
设备状态:当设备自身处于,忙,状态时,将设备的忙标志置
,l”。若与该设备相连接的控制器或通道处于,忙,状态,
而不能启动该设备,则将设备的等待标志置,l”。
COCT表指针:该指针指向与该设备相连接的控制器的控制表。
在具有多条通路的情况下,一个设备可与多个控制器相连接。
此时,在 DCT中应设置多个控制器表指针。
重复执行次数:外部设备在传送数据时,若发生信息传送错误,
系统并不立即认为传送失败,而是允许它重新传送。只要在规定的重复次数或时间内恢复正常传送,则仍认为传送成功,
否则才认为传送失败。 (练习 )
设备分配的数据结构图
SDT集合 SDT DCT集合 DCT
COCT集合 COCT CHCT集合 CHCT
表目 1
……
表目 i
……
设备类型设备标识符进程标识符
DCT表指针驱动程序入口地址表目 1
……
表目 i
……
设备类型设备标识符设备状态
( 等待 /不等待,忙 /闲)
COCT表指针重复执行的次数或时间设备队列的队首指针设备队列的队尾指针表目 1
……
表目 i
……
控制器标识符控制器状态(忙 /闲)
CHCT表指针控制器队列的队首指针控制器队列的队尾指针表目 1
……
表目 i
……
通道标识符通道状态(忙 /闲)
COCT表指针通道队列的队首指针通道队列的队尾指针设备分配程序 -2
2。 设备分配的流程对于具有单通道的系统,则当进程提出 I/O请求后,系统进行设备分配的流程图如下图 。
3。 设备分配程序的改进为了获得设备的独立性,进程应用逻辑设备名请求 I/O。 这样,系统首先从 SDT中找出第一个该类设备的 DCT。 如忙,
则查找第二个该类设备的 DCT,当所有该类设备都忙时,才把进程挂在该类设备的等待队列中 。
实际上,系统为了提高可靠性和灵活性,通常采用多通路的
I/O系统结构 。 此时对多个控制器和通道的分配,必须查找所有的控制器和通道,才能决定是否将该进程挂起 。
单通道系统的设备分配流程若忙 不忙不安全 安全不忙忙忙不忙进程 P提出所需的 I/O设备根据物理设备名,从 SDT中找出该设备的 DCT
由 DCT的设备状态字段,检查该设备是否忙?
将该进程的 PCB插入到该设备的等待队列中检查本次设备分配是否安全性?
将此设备分配给该进程从其 DCT中找出与该设备连接的控制器的 COCT,检查该控制器是否忙?
将该进程的 PCB插入到该控制器的的等待队列中将该控制器分配给进程从 COCT中找到与该控制器连接的通道的 CHCT,检查该通道是否忙?
将该进程的 PCB插入到该通道的的等待队列中 将该通道分配给进程至此,设备、控制器和通道三者都已分配成功启动 I/O设备,进行具体的 I/O操作
( 3) SPOOLing技术早期批处理系统中使用的虚拟技术是以 脱机 方式工作的 。 为了缓和 CPU和 I/O设备之间的速度不比配的问题 。 利用专门的外围控制机将低速 I/O设备上的数据传送到高速磁盘上,或者相反 。 当多道程序设计的分时系统出现后,SPOOLing技术就孕育而生,它将一台独占设备改造成可以共享的虚拟设备 。
1,什么是 SPOOLing技术当多道程序程序技术出现后,就可以利用一道程序,来模拟脱机输入时的外围控制机的功能,即把低速 I/O设备上的数据传送到高速的磁盘上;再用另一道程序来模拟脱机输出时外围控制机的功能,即把数据从磁盘传送到低速 I/O设备上 。 这样,便在主机的直接控制下,实现脱机输入,输出功能 。 所以,我们把这种 在联机情况下实现的同时与外围设备联机操作的技术称为 SPOOLing ( Simultaneous Peripheral
Operation On Line),或称为假脱机技术 。
SPOOLing技术 -1
2,SPOOLing系统的组成
SPOOLing系统是对脱机输入、输出工作的模拟,它必须有高速随机外存(硬盘)的支持。 SPOOLing系统主要有以下三部分(如下图所示):
输入井和输出井,在磁盘上开辟的两个大的存储空间。输入井模拟脱机输入时的磁盘,用于收容 I/O设备输入的数据。
输出井模拟脱机输出时的磁盘,用于收容用户程序的输出数据。
输入缓冲区和输出缓冲区,在内存中开辟两个缓冲区:输入缓冲区和输出缓冲区。输入缓冲区用于暂存由输入设备送来的数据,再传送到输入井。输出缓冲区用于暂存从输出井送来的数据,再传送给输出设备。
SPOOLing技术 -2
内 存 磁 盘输入设备输出设备
输入进程 SPi和输出进程 SPo
进程 SPi 模拟脱机输入时的外围控制机,将用户要求的数据从输入机通过输入缓冲区再送到输入井。当 CPU需要输入数据时,直接从输入井读入内存。 SPo 进程模拟脱机输出时的外围控制机,把用户要求输出的数据,先从内存送到输出井,
待输出设备空闲时,再将输出井中的数据,经过输出缓冲区送到输出设备上。
输入进程 SPi输出进程 SPo
输入缓冲区输出缓冲区输入井输出井
SPOOLing技术 -3
3.共享打印机打印机虽然是独享设备。但是通过 SPOOLing技术,可以将它改造为一台可供多个用户共享的设备。共享打印机技术已被广泛地用于多用户系统和局域网络。当用户进程请求打印输出时,SPOOLing系统并不是真正把打印机分配给该用户进程,
而由输出进程为该用户进程在输出井中申请一个存储空间,
并将要打印的数据以文件的形式存放于此。各进程的输出文件形成一个输出队列,由输出 SPOOLing系统控制这台打印机进程,依次将队列中的输出文件打印出来。
总之,利用 SPOOLing技术可以提高 I/O的速度,将独占设备改造为共享设备,实现虚拟设备的功能。
(练习 )
(五) 设备处理设备处理程序又称设备驱动程序,它是 I/O进程与设备控制器之间的通信程序
( 1) 设备处理程序的功能和处理方式
1,设备驱动程序的功能
接收上层软件发来的抽象要求 ( 如 read命令等 ),再把它转换成具体要求 。
检查用户 I/O请求的合法性,了解 I/O设备的状态,设置工作方式 。
对于设置有通道的计算机系统,驱动程序还应能够根据用户的 I/O请求,自动地构成通道程序 。
由驱动程序向设备控制器发出 I/O命令,启动分配到的 I/O设备,完成指定的 I/O操作 。
及时响应由控制器或通道发来的中断请求,并根据其中断调用相应的中断处理程序进行处理 。
2。设备处理方式根据在设备处理时是否设置进程,以及设置什么样的进程,
设备处理方式可分为以下三类:
为每一类设备设置一个 I/O进程,它专门执行这类设备的 I/O
操作。比如为所有的交互终端设置一个交互式终端进程。
整个系统中设置一个 I/O进程,全面负责系统的数据传送工作,I/O请求处理模块,设备分配模块以及缓冲器管理模块和中断原因分析、中断处理模块和后述的设备驱动模块都是
I/O进程的一部分。由于现代计算机系统设备十分复杂,I/O
负担很重,因此,又可把 I/O进程分为输入进程和输出进程。
不设置专门的设备处理进程,而是只为各类设备设置相应的设备处理程序,供用户进程和系统进程调用 。在 UNIX系统中,
每类设备都有一个驱动程序,用它来控制该类设备。任何一个驱动程序通常都包含了用于执行不同操作的多个函数,如打开、关闭、启动设备、读和写等函数。为使核心能方便地转向各函数,系统为每类设备提供了一个设备开关表,其中有该类设备的各函数的入口地址,它是核心与驱动的接口。
如下图所示。
设备开关表是系统调用和驱动程序间的接口
Open close
Open close read write ioctl mount unmount read write
字符设备开关表高速缓冲调用块设备开关表
Open close read write ioctl
驱动程序设备中断处理程序
Open close strategy
驱动程序设备中断处理程序中断向量 中断向量设备中断 返 7
( 2)设备处理程序的处理过程每类设备有自己的设备处理程序,但大体上它们都再分成两部分,主要用于启动设备的设备驱动程序和负责处理 I/O完成工作的设备中断处理程序 。
1,设备驱动程序的处理过程
将用户和上层软件对设备控制的抽象要求转换成对设备的具体要求,如对抽象要求的盘块号转换为磁盘的盘面,磁道及扇区 。
检查 I/O请求的合理性 。
读出和检查设备的状态,确保设备处于就绪态 。
传送必要的参数,如传送的字节数,数据在主存的首址等 。
工作方式的设置 。
启动 I/O设备,并检查启动是否成功,如成功则将控制返回给
I/O控制系统,在 I/O设备忙于传送数据时,该用户进程把自己阻塞,直至中断到来才将它唤醒,而 CPU可干别的事 。
2.中断处理程序的处理过程在设备控制器控制下,I/O设备完成了 I/O操作后,控制器
(或通道)便向 CPU发出一中断请求,CPU响应后便转向中断处理程序,中断处理程序大致包含以下几步:
在设置 I/O进程时,当中断处理程序开始执行时,都必须去唤醒阻塞的驱动(程序)进程。在采用信号量机制时,可通过执行 V操作,将处于阻塞状态的驱动(程序)进程唤醒。
保护被中断进程的 CPU现场。
分析中断原因,转入相应的设备中断处理程序。
进程中断处理,判别此次 I/O完成是正常结束中断还是异常结束中断,分别作相应处理。
恢复被中断进程或由调度程序选中的进程的 CPU的现场。
返回被中断的进程,或进入新选中的进程继续运行。
在 UNIX中将以上对各类设备处理相同的部分集中起来,形成中断总控程序,每当要进行中断处理时,都要首先进入中断总控程序,再按需要转入不同的设备处理程序。
习题
1,在 I/O设备控制的发展过程中,最主要的推动因素是 ﹎﹎ A﹎
﹎,提高 I/O速度和设备利用率,在 OS中主要依靠 ﹎﹎ B﹎﹎
功能 。 使用户所编制的程序与实际使用的物理设备无关是由
﹎﹎ C﹎﹎ 功能实现的 。
A,( 1) 提高资源利用率; ( 2) 提高系统吞吐量; ( 3) 减少主机对 I/O控制的干预; ( 4) 提高 CPU与 I/O设备的并行操作程度 。
B,C,( 1) 设备分配; ( 2) 缓冲管理; ( 3) 设备管理; ( 4)
设备独立性; ( 5) 虚拟设备 。
2.通道是一种特殊的 ﹎﹎ A﹎﹎,具有 ﹎﹎ B﹎﹎ 能力。
A:( 1) I/O 设备;( 2)设备控制器;( 3)处理机;( 4)
I/O控制器。
B:( 1)执行 I/O指令集;( 2)执行 CPU指令集;( 3)传输
I/O命令;( 4)运行 I/O进程。 (解 )
习题 -1
2.假定把磁盘上一个数据块中信息输入到一单缓冲的时间 T为
100us,将缓冲区中数据传送到用户区的时间 M为 50us,而 CPU
对这一块数据进行计算的时间 C为 50us,这样,系统对每一块数据的处理时间为 ﹎﹎ A﹎﹎ ;如果将单缓冲改为双缓冲,则系统对每一块数据的处理时间为 ﹎﹎ B﹎﹎ 。
A,B:( 1) 50us;(2)100us;(3)150us;(4)200us;(5)250us。
3,下面关于设备独立性的论述中,第 ﹎﹎ A﹎﹎ 条是正确的论述 。
( 1) 设备独立性是 I/O设备具有独立执行 I/O功能的一种特性 。
( 2) 设备独立性是指用户程序独立于具体使用的物理设备的一种特性。
( 3) 设备独立性是指能独立实现设备共享的一种特性。
( 4) 设备独立性是指设备驱动独立于具体使用的物理设备的一种特性。 (解 )
习题 -2
5,下面关于虚拟设备的论述中,第 ﹎﹎ A﹎﹎ 条是正确的论述 。
( 1) 虚拟设备是指允许用户使用比系统中具有的物理设备更多的设备 。
( 2) 虚拟设备是指允许用户以标准化方式来使用物理设备。
( 3) 虚拟设备是把一个物理设备变换成多个对应的逻辑设备。
( 4) 虚拟设备是指允许用户程序不必全部装入内存便可使用系统中的设备。
6.下列有关 SPOOLing系统的论述中,第 ﹎﹎ A﹎﹎ 和第 ﹎﹎ B﹎
﹎ 条是正确的论述。
( 1) 构成 SPOOLing系统的基本条件,是具有外围输入机与外围输出机。
( 2) 构成 SPOOLing系统的基本条件,是只要具有大容量、高速硬盘作为输入井与输出井。
( 3) 只要操作系统中采用了多道程序设计技术,就可以构成
SPOOLing系统。
习题 -3
( 4) SPOOLing系统是建立在分时系统中。
( 5) SPOOLing系统是虚拟存储技术的体现。
( 6) SPOOLing系统是在用户程序要读取数据时起动输入进程输入数据。
( 7) 当输出设备忙时,SPOOLing系统中的用户程序暂停执行,
待 I/O 空闲时再被唤醒,去执行输出操作。
( 8) SPOOLing系统实现了对 I/O设备的虚拟,只要输入设备空闲,SPOOLing可预先将输入数据从设备传输到输入井中供用户程序随时读取。
( 9) 在 SPOOLing系统中,用户程序可以随时将输出数据送到输出井中,待输出设备空闲时再执行数据输出操作。
(解 )
7.试述多通路 I/O系统设备管理中数据结构。 (解 )
(Devices Management)
教学目的,
设备管理不但要管理实际 I/O操作的设备(如磁盘机、打印机),还要管理诸如设备控制器,DMA控制器、中断控制器、
I/O处理机(通道)等支持设备。设备管理包括各种设备分配、
缓冲区管理和实际物理 I/ O设备操作,通过管理达到提高设备利用率和方便用户。
教学要求:
了解设备的分类,熟悉 设备管理的目标和功能。
熟悉 程序 I/O方式、中断方式,DMA方式和通道方式四种 I/O的控制方式;掌握通道的概念,熟悉 通道类型。
熟悉 缓冲的概念,熟悉 单缓冲、双缓冲和多缓冲和缓冲池工作原理,了解 UNIX系统的缓冲技术。
了解在进行设备分配时应考虑的设备的固有属性、设备的分配算法、设备分配的安全性和设备的独立性等因素;掌握设备分配中数据结构,熟悉 设备分配的流程;掌握 SPOOLing技术概念和 SPOOLing系统的组成。
熟悉 设备处理程序的功能和处理方式,熟悉 设备处理程序的处理过程 。
(一) 设备管理的概述
( 1) I/O系统的组成:
1。微 机 I/O系统图
2。主 机 I/O系统图
(一) 设备管理的概述
( 1) 设备的分类
I/O设备的种类繁多,从 OS观点来看,其重要的性能指标有:
数据传输速率,数据的传输单位,设备的共享属性等 。
1,按传输速率分类
低速设备,指传输速率为每秒钟几个字节到数百个字节的设备 。 典型的设备有键盘,鼠标,语音的输入等;
中速设备,指传输速率在每秒钟数千个字节至数十千个字节的设备 。 典型的设备有行式打印机,激光打印机等;
高速设备,指传输速率在数百千个字节至数兆字节的设备 。
典型的设备有磁带机,磁盘机,光盘机等 。
设备的分类 -1
2.按信息交换的单位分类
块设备 ( Block Device):指以数据块为单位来组织和传送数据信息的设备。这类设备用于存储信息,有磁盘和磁带等。
它属于有结构设备。典型的块设备是磁盘,每个盘块的大小为 512B~ 4KB,磁盘设备的基本特征是:①传输速率较高,通常每秒钟为几兆位;②它是可寻址的,即可随机地读 /写任意一块;③磁盘设备的 I/O采用 DMA方式。
字符设备 ( Character Device):指以单个字符为单位来传送数据信息的设备。这类设备一般用于数据的输入和输出,
有交互式终端、打印机等。它属于无结构设备。字符设备的基本特征是:①传输速率较低;②不可寻址,即不能指定输入时的源地址或输出时的目标地址;③字符设备的 I/ O常采用中断驱动方式。
设备的分类 -2
3.按资源分配的角度分类
独占设备,指在一段时间内只允许一个用户 ( 进程 ) 访问的设备,大多数低速的 I/O设备,如用户终端,打印机等属于这类设备 。 因为独占设备属于临界资源,所以多个并发进程必须互斥地进行访问 。
共享设备,指在一段时间内允许多个进程同时访问的设备 。
显然,共享设备必须是可寻址的和可随机访问的设备 。 典型的共享设备是磁盘 。 共享设备不仅可以获得良好的设备利用率,而且是实现文件系统和数据库系统的物质基础 。
虚拟设备,指通过虚拟技术将一台独占设备变换为若干台供多个用户 ( 进程 ) 共享的逻辑设备 。 一般可以利用假脱机技术 ( SPOOLing技术 ) 实现虚拟设备 。
(2)设备管理的目标和功能
1,设备管理的目标
提高设备的利用率 。 为此,应尽量提高 CPU与 I/O设备之间的并行操作程度,主要利用的技术有:中断技术,DMA技术,通道技术,缓冲技术 。
为用户提供方便,统一的界面 。 所谓方便,是指用户能独立于具体设备的复杂物理特性之外而方便地使用设备 。 所谓统一,是指对不同的设备尽量使用统一的操作方式,例如各种字符设备用一种 I/O操作方式 。 这就要求用户操作的是简便的逻辑设备,而具体的 I/O物理设备由操作系统去实现,这种性能常常被称为设备的独立性 。
设备管理的目标和功能 -1
2,设备管理功能
设备分配 。指设备管理程序按照一定的算法把某一个 I/O设备、
及其相应的设备控制器和通道分配给某一用户(进程),对于未分配到的进程,则插入等待队列中。
缓冲区管理 。为了解决 CPU与 I/O之间速度不匹配的矛盾,在它们之间配置了缓冲区。这样 设备管理程序又要负责管理缓冲区的建立、分配和释放。
实现物理 I/O设备的操作 。对于具有通道的系统,设备管理程序根据用户提出的 I/O请求,生成相应的通道程序并提交给通道,然后用专门的通道指令启动通道,对指定的设备进行 I/O
操作,并能响应通道的中断请求。对于未设置通道的系统,
设备管理程序直接驱动设备进行 I/O操作。
(二) I/O控制方式
随着计算机技术的发展,I/O的控制方式也在不断地发展 。 一般可分为:程序 I/O方式,中断方式,DMA方式和通道方式 。 I/O的控制方式发展的目标是尽量 减少主 机对 I/O控制的干预 。
( 1) 程序 I/O(Programmed I/O)方式
在早期的计算机系统中,由于没有中断机构,处理机对 I/O
设备直接进行控制,采取程序 I/O( Programmed I/O) 方式或称为忙 -等待方式,即在 CPU向设备控制器发出一条 I/O指令启动 I/O设备进行数据传输时,要同时把状态寄存器中的忙 /闲标志 busy置为 1,然后便不断地循环测试 busy。 当
busy=l时,表示该 I/O设备尚未输入完一个字 (符 ),CPU应继续对该标志进行测试,直至 busy=0,表示该 I/O设备已将输入数据送入到 I/O控制器的数据寄存器中,于是 CPU将从数据寄存器中取出数据,送入内存的指定单元,接着,再启动去读下一个数据,并置 busy=l。
( a)程序 I/O方式的流程 ( b)中断驱动方式的流程
CPU→I/O
CPU→I/O CPU做其它事中断
I/O→CPU
I/O→CPU
未就绪 出错 出错处理 处理就绪 就绪
I/O→CPU I/O→CPU
CPU→RAM CPU→RAM
未完 未完完成 完成执行下一条 I/O指令 执行下一条 I/O指令向 I/O控制器发读命令读 I/O控制器的状态检查状态?
从 I/O控制器中读入字向内存中写入字传 送 完 毕?
向 I/O控制器发读命令读 I/O控制器的状态检查状态?
从 I/O控制器中读入字向内存中写入字传 送 完 毕?
I/O控制方式 -1
在程序 I/O方式中,由于 CPU的速度远远高于 I/O设备,导致
CPU的绝大部分时间都处于等待 I/O设备完成而循环测试之中,
造成了 CPU的极大浪费。但是它管理简单,在要求不高的场合可以被采用。
( 2)中断控制 (Interrupt-driven I/O)方式在现代计算机系统中,对 I/O设备的控制,广泛地采用中断驱动方式,即当某进程要启动某个 I/O设备时,便由 CPU向相应的设备控制器发出一条 I/O命令,然后立即返回继续执行原来的任务。设备控制器便按照该命令的要求去控制 I/O设备。此时,CPU与 I/O设备处于并行工作状态。例如,在输入时,当设备控制器收到 CPU发来的读命令后,便准备接收从相应输入设备送来的数据。一旦数据进入数据寄存器,控制器便通过控制线向 CPU发送一中断信号,由 CPU检查输入过程中是否出错,若无错,便向控制器发取走数据的信号,然后便通过控制器将数据写入指定内存单元。
I/O控制方式 -2
所以,中断驱动方式在 I/O设备输入数据的过程中,无需 CPU
干预,可以使 CPU与 I/O设备并行工作 。 仅当输完一个数据时,
才需 CPU花费极短的时间去进行中断处理 。 从而大大地提高了整个系统的资源利用率及吞吐量,特别是 CPU的利用率 。
( 3) DMA(Direct Memory Access )控制方式中断驱动 I/O方式虽然大大提高了主机的利用率,但是它以字
( 节 ) 为单位进行数据传送,每完成一个字 ( 节 ) 的传送,
控制器便要向 CPU请求一次中断 ( 做保存现场信息,恢复现场等工作 ),例如 1KB的数据块,要中断 1K次 CPU。 仍然占用了
CPU的许多时间 。 这种方式对于高速的块设备的 I/O控制显然是不适合 。 为了进一步减少 CPU对 I/O的干预,引入了直接存储器访问 ( Direct Memory Access) 控制方式 。 该方式的特点是:
1,它作为高速的外围设备与内存之间成批的数据交换,但是不对数据再做加工处理,数据传输的基本单位是数据块,I/O操作的类型比较简单 。
I/O控制方式 -3
2,它需要使用一个专门的 DMA控制器 ( DMAC) 。 DMAC中有控制,状态寄存器,传送字节计数器,内存地址寄存器和数据缓冲寄存器 。
3,它采用盗窃总线控制权的方法,由 DMAC送出内存地址和发出内存读,设备写或设备读,内存写的控制信号来完成内存与设备之间的直接数据传送,而不用 CPU的干预 。 有的 DMA传送甚至不经过
DMAC的数据缓冲寄存器的再吞吐,传输速率非常高 。
4,仅在传送一个或多个数据块的开始和结束时,才需 CPU干预,
整块数据的传送是在控制器的控制下完成的 。
可见,DMA方式较之中断驱动方式,又是成百倍地减少了 CPU对
I/O控制的干预,进一步提高了 CPU与 I/O设备的并行操作程度 。
CPU
主存
DMA控制器 I/O设备
1
2
3
4
1CPU从主存读取控制信息
2CPU把控制信息送 DMAC
3CPU执行其它指令
DMAC从主存读 /写数据
4CPU继续执行其它指令
DMAC把数据送 I/O设备
(4)I/O通道控制方式
1,I/O通道控制方式的引入虽然 DMA方式比中断驱动方式已显著地减少了 CPU的干预,
即由以字 ( 节 ) 为单位的干预减少到以数据块为单位的干预 。
但是 CPU每发出一条 I/O指令,也只能去读 ( 或写 ) 一个连续的数据块 。 而当我们需要一次去读多个离散的数据块且将它们分别传送到不同的内存区域,或者相反时,则需由 CPU分别发出多条 I/O指令及进行多次中断处理,才能完成 。
由于 DMA每次只能执行一条 I/O指令,不能满足复杂的 I/O
操作要求 。 在大,中型计算机系统中,普遍采用由专用的
I/O处理机来接受 CPU的委托,独立执行自己的通道程序来实现 I/O设备与内存之间的信息交换,这就是通道技术 。 通道技术可以进一步减少 CPU的干预,即把对一个数据块为单位的读 ( 或写 ) 的干预,减少到对一组数据块为单位的读 ( 或写 ) 的有关的控制和管理的干预 。 这样可实现 CPU,通道和
I/O设备三者之间的并行工作,从而更有效地提高了整个系统的资源利用率和运行速度 。
I/O通道控制方式 -1
2.通道程序通道是通过执行通道程序,并与设备控制器来共同实现对
I/O设备的控制。通道程序是由一系列的通道指令(或称为通道命令)所构成。通道指令与一般的机器指令不同,在每条指令中包含的信息较多,有操作码、内存地址、计数(读或写数据的字节数)、通道程序结束位 P和记录结束标志 R。
3.通道类型由于外围设备的种类较多,且其传输速率相差很大,所以通道也具有多种类型。根据信息交换方式,可以把通道分成以下三种类型:
字节多路通道 ( Byte Multiplexor Channel)
在这种通道中,通常都含有较多个( 8,16,32)非分配型子通道,每一个子通道连接一台 I/O设备。这些子通道按时间片轮转方式共享主通道。一个子通道完成一个字节的传送后,
立即让出字节多路通道(主通道),给另一个子通道使用。
它适用于连接低速或中速设备,如打印机、终端等。
I/O通道控制方式 -2
数组选择通道 ( Block Selector Channel)
这种通道虽然可以连接多台 I/O设备,但是它只有一个分配型子通道,在一段时间内只能执行一道通道程序,控制一台设备进行数据传送,其数据传送是按数组方式进行 。 即当某台设备一旦占用了该通道,就被它独占,直至该设备传送完毕释放该通道为止 。 可见,它适于连接高速设备 ( 如磁盘机,
磁带机 ),但是这种通道的利用率较低 。
数组多路通道 ( Block Multiplexor Channel)
数组选择通道虽然有很高的传输速率,但它每次只允许一个设备传输数据 。 数组多路通道是将数组选择通道的传输速率高和字节多路通道的分时并行操作的优点结合起来,形成的一种新的通道 。 它含有多个非分配型子通道,可以连接多台高,中速的外围设备,其数据传送却是按数组方式进行 。 所以这种通道既具有很高的数据传输速率,又能获得令人满意的通道利用率 。 (练习 )
(三)缓冲( Buffering )技术目前为了解决 CPU与 I/O设备间速度不匹配的矛盾,提高的 I/O
速度和设备利用率,在所有的 I/O设备与处理机 ( 内存 ) 之间,
都使用了缓冲区来交换数据 。 所以 OS必须组织和管理好这些缓冲区 。
( 1) 缓冲的引入在操作系统中,引入缓冲的主要原因,可归结为以下几点:
1。 改善 CPU与 I/O设备间速度不匹配的矛盾例如一个程序,它时而进行长时间的计算而没有输出,时而又阵发性把输出送到打印机 。 由于打印机的速度跟不上 CPU,
而使得 CPU长时间的等待 。 如果设置了缓冲区,程序输出的数据先送到缓冲区暂存,然后由打印机慢慢地输出 。 这时,CPU
不必等待,可以继续执行程序 。 实现了 CPU与 I/O设备之间的并行工作 。 事实上,凡在数据的到达速率与其离去速率不同的地方,都可设置缓冲,以缓和它们之间速度不匹配的矛盾 。
众所周知,通常的程序都是时而计算,时而输出的 。
缓冲技术 -1
2。可以减少对 CPU的中断频率,放宽对中断响应时间的限制如果 I/O操作每传送一个字节就要产生一次中断,那么设置了 n个字节的缓冲区后,则可以等到缓冲区满才产生中断,这样中断次数就减少到 1/n,而且中断响应的时间也可以相应的放宽。
3.提高 CPU和 I/ O设备之间的并行性缓冲的引入可显著提高 CPU和设备的并行操作程度,提高系统的吞吐量和设备的利用率。
缓冲技术 -2
( 2) 单缓冲( Single Buffer )
每当一个用户进程发出一个 I/O请求时,OS便在主存中为之分配一个缓冲区。例如,CPU要从磁盘上读一块数据进行计算,
先从磁盘把一块数据读入到缓冲区中,然后由 OS将缓冲区的数据传送到用户区,最后由 CPU对这一块数据进行计算,可见第一步和最后一步是可以并行执行的,这样就提高了 CPU和外设的利用率。但是对缓冲区中数据的输入和提取是串行工作的。 (如下图所示)
操作系统 用户进程输入 传送
I/O设备缓冲区 用户区缓冲技术 -3
( 3) 双缓冲 ( Double Buffer )
双缓冲工作方式基本方法是在设备输入时,先将数据输入到缓冲区 A,装满后便转向缓冲区 B。 此时 OS可以从缓冲区 A中提取数据传送到用户区,最后由 CPU对数据进行计算 。 ( 如下图所示 ) 操作系统 用户进程
C
输入 T 传送 M
I/O设备
( 4) 多缓冲 ( Circular Buffer )
双缓冲可以实现对缓冲区中数据的输入和提取,与 CPU的计算,
三者并行工作 。 所以双缓冲进一步加快了 I/O的速度,提高了设备的利用率 。 (练习 )
缓冲区 A
用户区缓冲区 B
缓冲技术 -4
当对缓冲区中数据的输入和提取的速度基本相匹配时,采用双缓冲可使两者并行工作,获得较好的效果 。 但是如果两者的速度相差甚远时,双缓冲的效果就不够理想了 。 如果增加缓冲区的个数,情况就会有所改善 。 我们可以将多个缓冲区组织成循环队列的形式 ( 如下图所示 ) 。 例如对于用作输入的循环缓冲区,通常提供给输入进程和计算进程使用,输入进程不断向空缓冲区中输入数据,计算进程则从满缓冲区中提取数据用于计算 。 生产者 -
-----消费者操作系统 用户进程输入 传送
I/O设备 ……
缓冲区 1
用户区缓冲区 2
缓冲区 N
缓冲技术 -5
( 5) 缓冲池当系统配置较多的设备时,使用专用缓冲区就要消耗大量的内存空间,且其利用率不高。为了提高缓冲区的利用率,
目前广泛使用公用缓冲池,池中的缓冲区可供多个进程共享。
对于同时用于输入 /输出的公用缓冲池,至少含有三种类型的缓冲区:空缓冲区、装满输入数据的缓冲区和装满输出数据的缓冲区。为了管理上的方便,可将相同类型的缓冲区链成一个队列,于是就形成三个队列:空缓冲区队列、输入缓冲区队列和输出缓冲区队列。
另外还应具有四种工作缓冲区:⑴用于收容输入数据的工作缓冲区( hin);⑵用于提取输入数据的工作缓冲区( sin);
⑶ 用于收容输出数据的工作缓冲区( hout);⑷用于提取输出数据的工作缓冲区( sout)。可见,缓冲区工作在收容输入、提取输入、收容输出和提取输出四种工作方式下(如下图 5所示)。
缓冲技术 -6
缓冲池收容输入 提取输入提取输出 收容输出
( 6) UNIX系统的缓冲技术
UNIX系统采用缓冲 池 技术,来平滑和加快文件信息从内存到磁盘的传输。当从磁盘上读数据时,如果数据已经在缓冲区中,则核心就直接从缓冲区中读出,而不必从盘上读;当数据不在缓冲区时,核心先把数据从磁盘传送到缓冲区,再由缓冲区读出。目的在于尽可能减少磁盘 I/O的次数,提高系统运行的速度。
hin
sout
sin
hout
用户程序缓冲技术 -7
1。 缓冲控制块在系统初始化时,核心根据内存的大小和系统性能要求分配若干个缓冲区 。 每个缓冲区由两部分组成:存放数据的内存数组 ( 一般称为缓冲区 ) 和缓冲控制块 ( 又称为缓冲首部,
用来记录缓冲区的使用情况 ) 。 缓冲区和缓冲控制块一一对应 。 系统通过缓冲控制块来实现对缓冲区的管理,保证一个盘块一次只能映射一个缓冲区 。 缓冲控制块的数据结构如下图所示 。
设备号盘块号状态指向缓冲区的指针指向散列队列的后继 buf 的指针指向散列队列的前驱 buf 的指针指向自由链的后继 buf 的指针指向自由链的前驱 buf 的指针缓冲技术 -8
其中,设备号和盘块号分别标志出文件系统和数据所在的盘块号,它们是缓冲区的唯一标志。设备号是指逻辑文件的系统号,并非物理装置号。缓冲区的大小至少与盘块的大小相等。状态项指明了该缓冲区当前的状态,如忙 /闲,数据有效性等。还有两组指针用于对缓冲池(由所有的缓冲区组成)
的分配管理。
2.缓冲池结构利用缓冲控制块的两组指针,核心把缓冲池中的缓冲区用两条双向链表环组织起来,一条是自由链,所有处于“空闲”
状态的 buf都在该链中,且只有一条。系统初始时,所有 buf都在该链上。另一条是散列队列,可以有多个队列,各队列是由具有相同散列值的 buf组成,散列值是设备和盘块号的函数。
下图所示了缓冲池的链接结构。
缓冲技术 -9
其中,实线 表示自由链,由一个自由链链头指示 。 多条虚线各表示不同的散列队列,同一行是具有同一散列值的队列,由散队列链头指示 。 每个 buf总是存在于一个散列队列中,但其位置是动态可变的 。 如果一个 buf分配给某个盘块,但当前并未使用,则该 buf能同时出现在两条链中,如下图所示 。
块号 mod 4 =0
块号 mod 4 =1
块号 mod 4 =2
块号 mod 4 =3
28 4 64
17 5
98 50
97
10
3 35 99
自由链链头缓冲技术 -9
3,缓冲区的分配和释放当进程想从指定的盘块读取数据,或把数据写到指定的盘块中时,核心要检查该块是否在缓冲区中,如果不在,则为该盘块分配一个空闲的缓冲区 。 当核心用完缓冲区后,要把它释放,链入自由链中 。
核心对缓冲区的分配是采用 LRU算法:在把一个缓冲区分给一个盘块后,核心就不能让另外的盘块使用它,直到所有其它的缓冲区最近都被用过为止,即该缓冲区是最长时间未被使用的,因此被重新分配 。 分配缓冲区有两条途径:一是从散列队列中查找;另一条是仅当在散列队列中未找到时,则从自由链上分配 。 从自由链上分配时,一般都从自由链开头摘取一个 。 当核心回收一个缓冲区时,通常把相应的 buf链入自由链的末尾 。
(四) 设备的分配在多道程序环境下,设备必须由系统分配 。 每当进程向系统提出 I/O请求时,设备分配程序按照一定的策略,把其所需的设备及其有关资源 ( 如缓冲区,控制器和通道 ) 分配给该进程 。 在分配设备时还必须考虑系统的安全性,避免发生死锁现象 。
( 1) 设备分配的策略
1,根据设备的固有属性而采取的策略
独享方式独享方式是指将一个设备分配给某进程后,便一直由它独占,直至该进程完成或释放该设备为止,系统才能将该设备分配给其它进程使用 。 这种分配方式是对独占设备采用的分配策略 。 它不仅往往造成设备利用率低,而且还会引起系统死锁 。
设备分配的策略 -1
共享方式共享方式是指将共享设备(磁盘)同时分配给多个进程使用。但是这些进程对设备的访问需进行合理的调度。
虚拟方式虚拟方式是指通过高速的共享设备,把一台慢速的以独占方式工作的物理设备改造成若干台虚拟的同类逻辑设备,这就需要引入 SPOOLing技术。虚拟设备属于逻辑设备。
2.设备分配算法( 与进程的调度算法相似)
先来先服务:当多个进程同时向某一设备提出 I/O请求时,该算法就根据对该设备提出请求的先后次序将这些进程排列成一个设备请求队列,设备分配程序把设备首先分配给队首进程。
优先级高者优先:对优先权高的进程所提出的 I/O请求赋予高优先权,在形成设备队列时,将优先级高的进程排在设备队列前面,先得到分配。而对于优先权相同的 I/O请求,则按先来先服务原则排队分配。
设备分配的策略 -2
3,设备分配中的安全性
安全分配方式每当进程发出一个 I/O请求后,便进入阻塞状态,直到其
I/O操作完成时才被唤醒 。 当它运行时不保持任何设备资源,
打破了产生死锁一个必要条件 —“请求和保持,,所以这种分配方式是安全的 。 但是这种分配算法使得 CPU与 I/O设备串行工作,设备的利用率比较低 。
不安全分配方式进程发出一个 I/O请求后仍可以继续运行,需要时还可以发第二个 I/O请求,第三个 I/O请求 。 只有当进程所请求的设备已被另一个进程占用时,进程才进入阻塞状态 。 这种分配方式是不安全,因为它可能具备,请求和保持,条件,从而可能造成系统死锁 。
设备分配的策略 -3
如第四课 图 所示进程 P1发出第一个 I/O请求,占有了资源 1后,
在继续向前推进时,又要申请资源 2;此时,进程 P2却占有了资源 2,在继续向前推进时,又要申请资源 1,从而造成系统死锁。所以,在设备分配程序中应该增加安全性检查的功能。
4.设备独立性( Device Independence)
为了提高 OS的可适应性和可扩展性,目前几乎所有的 OS都实现了设备的独立性(也称为设备无关性)。其基本思想是:
用户程序不直接使用物理设备名(或设备的物理地址),而只能使用逻辑设备名;而系统在实际执行时,将逻辑设备名转换为某个具体的物理设备名,实施 I/O操作。
为此,引入逻辑设备和物理设备两个概念。逻辑设备是实际物理设备属性的抽象,它并不限于某个具体设备。例如在
MS-DOS中,最基本的输入、输出设备(键盘和显示器)用一个公共的逻辑设备名 CON( Console—控制台),并由同一个设备驱动程序来驱动和控制;并行打印机的逻辑设备名为 PRN
或 LPTi;异步串行通讯口的逻辑设备名为 AUX或 COMi等等。
设备分配的策略 -4
总之,使用逻辑设备名是操作系统对用户程序的设备独立性的具体支持 。 设备独立性带来以下两方面的好处:
设备分配时的灵活性,当进程以逻辑设备名请求某类设备时,
如果一台设备已经分配给其它进程或正在检修,此时系统可以将其它几台相同的空闲设备中的任一台分配给该进程,只有当此类设备全部被分配完时,进程才会被阻塞 。
易于实现 I/O重定向
为了实现设备的独立性,必须在驱动程序之上设置一层软件,
称为设备独立性软件,其主要功能有以下两个方面,? 执行所有设备的公有操作;?向用户层 ( 或文件层 ) 软件提供统一的接口 。
为了实现逻辑设备名到物理设备名的映射,系统必须设置一张 逻辑设备表 LUT( Logical Unit Table),能够将应用程序中所使用的逻辑设备名映射为物理设备名,并提供该设备驱动程序的人口地址 。 (练习 )
(2)设备分配程序设备分配程序是负责向对系统提出 I/O请求的进程分配设备,及其相应的控制器和通道 。
1,设备分配中数据结构数据结构有,系统设备表 ( SDT),设备控制表 ( DCT),控制器控制表 ( COCT),通道控制表 ( CHCT) 。 每个表的具体内容如下图所示 。
在整个系统中,有一张系统设备表 ( SDT),用于记录系统中全部设备的信息 。 每个设备占一个表目,其中包括设备类型,
设备标识符,设备控制表指针及设备驱动程序的入口地址等表项 。
系统为每一个设备都配置了一张设备控制表 ( DCT),用于记录该设备的情况 。 表中除了有用于指示设备类型的字段和设备标识符字段外,还应有下列字段:
设备分配程序 -1
设备队列的队首指针:凡因请求本设备而未得到满足的进程,
其 PCB都应按照一定的策略排成一个队列,称为设备请求队列或简称为设备队列。其队首指针指向队首 PCB,在有的系统中还设置了队尾指针。
设备状态:当设备自身处于,忙,状态时,将设备的忙标志置
,l”。若与该设备相连接的控制器或通道处于,忙,状态,
而不能启动该设备,则将设备的等待标志置,l”。
COCT表指针:该指针指向与该设备相连接的控制器的控制表。
在具有多条通路的情况下,一个设备可与多个控制器相连接。
此时,在 DCT中应设置多个控制器表指针。
重复执行次数:外部设备在传送数据时,若发生信息传送错误,
系统并不立即认为传送失败,而是允许它重新传送。只要在规定的重复次数或时间内恢复正常传送,则仍认为传送成功,
否则才认为传送失败。 (练习 )
设备分配的数据结构图
SDT集合 SDT DCT集合 DCT
COCT集合 COCT CHCT集合 CHCT
表目 1
……
表目 i
……
设备类型设备标识符进程标识符
DCT表指针驱动程序入口地址表目 1
……
表目 i
……
设备类型设备标识符设备状态
( 等待 /不等待,忙 /闲)
COCT表指针重复执行的次数或时间设备队列的队首指针设备队列的队尾指针表目 1
……
表目 i
……
控制器标识符控制器状态(忙 /闲)
CHCT表指针控制器队列的队首指针控制器队列的队尾指针表目 1
……
表目 i
……
通道标识符通道状态(忙 /闲)
COCT表指针通道队列的队首指针通道队列的队尾指针设备分配程序 -2
2。 设备分配的流程对于具有单通道的系统,则当进程提出 I/O请求后,系统进行设备分配的流程图如下图 。
3。 设备分配程序的改进为了获得设备的独立性,进程应用逻辑设备名请求 I/O。 这样,系统首先从 SDT中找出第一个该类设备的 DCT。 如忙,
则查找第二个该类设备的 DCT,当所有该类设备都忙时,才把进程挂在该类设备的等待队列中 。
实际上,系统为了提高可靠性和灵活性,通常采用多通路的
I/O系统结构 。 此时对多个控制器和通道的分配,必须查找所有的控制器和通道,才能决定是否将该进程挂起 。
单通道系统的设备分配流程若忙 不忙不安全 安全不忙忙忙不忙进程 P提出所需的 I/O设备根据物理设备名,从 SDT中找出该设备的 DCT
由 DCT的设备状态字段,检查该设备是否忙?
将该进程的 PCB插入到该设备的等待队列中检查本次设备分配是否安全性?
将此设备分配给该进程从其 DCT中找出与该设备连接的控制器的 COCT,检查该控制器是否忙?
将该进程的 PCB插入到该控制器的的等待队列中将该控制器分配给进程从 COCT中找到与该控制器连接的通道的 CHCT,检查该通道是否忙?
将该进程的 PCB插入到该通道的的等待队列中 将该通道分配给进程至此,设备、控制器和通道三者都已分配成功启动 I/O设备,进行具体的 I/O操作
( 3) SPOOLing技术早期批处理系统中使用的虚拟技术是以 脱机 方式工作的 。 为了缓和 CPU和 I/O设备之间的速度不比配的问题 。 利用专门的外围控制机将低速 I/O设备上的数据传送到高速磁盘上,或者相反 。 当多道程序设计的分时系统出现后,SPOOLing技术就孕育而生,它将一台独占设备改造成可以共享的虚拟设备 。
1,什么是 SPOOLing技术当多道程序程序技术出现后,就可以利用一道程序,来模拟脱机输入时的外围控制机的功能,即把低速 I/O设备上的数据传送到高速的磁盘上;再用另一道程序来模拟脱机输出时外围控制机的功能,即把数据从磁盘传送到低速 I/O设备上 。 这样,便在主机的直接控制下,实现脱机输入,输出功能 。 所以,我们把这种 在联机情况下实现的同时与外围设备联机操作的技术称为 SPOOLing ( Simultaneous Peripheral
Operation On Line),或称为假脱机技术 。
SPOOLing技术 -1
2,SPOOLing系统的组成
SPOOLing系统是对脱机输入、输出工作的模拟,它必须有高速随机外存(硬盘)的支持。 SPOOLing系统主要有以下三部分(如下图所示):
输入井和输出井,在磁盘上开辟的两个大的存储空间。输入井模拟脱机输入时的磁盘,用于收容 I/O设备输入的数据。
输出井模拟脱机输出时的磁盘,用于收容用户程序的输出数据。
输入缓冲区和输出缓冲区,在内存中开辟两个缓冲区:输入缓冲区和输出缓冲区。输入缓冲区用于暂存由输入设备送来的数据,再传送到输入井。输出缓冲区用于暂存从输出井送来的数据,再传送给输出设备。
SPOOLing技术 -2
内 存 磁 盘输入设备输出设备
输入进程 SPi和输出进程 SPo
进程 SPi 模拟脱机输入时的外围控制机,将用户要求的数据从输入机通过输入缓冲区再送到输入井。当 CPU需要输入数据时,直接从输入井读入内存。 SPo 进程模拟脱机输出时的外围控制机,把用户要求输出的数据,先从内存送到输出井,
待输出设备空闲时,再将输出井中的数据,经过输出缓冲区送到输出设备上。
输入进程 SPi输出进程 SPo
输入缓冲区输出缓冲区输入井输出井
SPOOLing技术 -3
3.共享打印机打印机虽然是独享设备。但是通过 SPOOLing技术,可以将它改造为一台可供多个用户共享的设备。共享打印机技术已被广泛地用于多用户系统和局域网络。当用户进程请求打印输出时,SPOOLing系统并不是真正把打印机分配给该用户进程,
而由输出进程为该用户进程在输出井中申请一个存储空间,
并将要打印的数据以文件的形式存放于此。各进程的输出文件形成一个输出队列,由输出 SPOOLing系统控制这台打印机进程,依次将队列中的输出文件打印出来。
总之,利用 SPOOLing技术可以提高 I/O的速度,将独占设备改造为共享设备,实现虚拟设备的功能。
(练习 )
(五) 设备处理设备处理程序又称设备驱动程序,它是 I/O进程与设备控制器之间的通信程序
( 1) 设备处理程序的功能和处理方式
1,设备驱动程序的功能
接收上层软件发来的抽象要求 ( 如 read命令等 ),再把它转换成具体要求 。
检查用户 I/O请求的合法性,了解 I/O设备的状态,设置工作方式 。
对于设置有通道的计算机系统,驱动程序还应能够根据用户的 I/O请求,自动地构成通道程序 。
由驱动程序向设备控制器发出 I/O命令,启动分配到的 I/O设备,完成指定的 I/O操作 。
及时响应由控制器或通道发来的中断请求,并根据其中断调用相应的中断处理程序进行处理 。
2。设备处理方式根据在设备处理时是否设置进程,以及设置什么样的进程,
设备处理方式可分为以下三类:
为每一类设备设置一个 I/O进程,它专门执行这类设备的 I/O
操作。比如为所有的交互终端设置一个交互式终端进程。
整个系统中设置一个 I/O进程,全面负责系统的数据传送工作,I/O请求处理模块,设备分配模块以及缓冲器管理模块和中断原因分析、中断处理模块和后述的设备驱动模块都是
I/O进程的一部分。由于现代计算机系统设备十分复杂,I/O
负担很重,因此,又可把 I/O进程分为输入进程和输出进程。
不设置专门的设备处理进程,而是只为各类设备设置相应的设备处理程序,供用户进程和系统进程调用 。在 UNIX系统中,
每类设备都有一个驱动程序,用它来控制该类设备。任何一个驱动程序通常都包含了用于执行不同操作的多个函数,如打开、关闭、启动设备、读和写等函数。为使核心能方便地转向各函数,系统为每类设备提供了一个设备开关表,其中有该类设备的各函数的入口地址,它是核心与驱动的接口。
如下图所示。
设备开关表是系统调用和驱动程序间的接口
Open close
Open close read write ioctl mount unmount read write
字符设备开关表高速缓冲调用块设备开关表
Open close read write ioctl
驱动程序设备中断处理程序
Open close strategy
驱动程序设备中断处理程序中断向量 中断向量设备中断 返 7
( 2)设备处理程序的处理过程每类设备有自己的设备处理程序,但大体上它们都再分成两部分,主要用于启动设备的设备驱动程序和负责处理 I/O完成工作的设备中断处理程序 。
1,设备驱动程序的处理过程
将用户和上层软件对设备控制的抽象要求转换成对设备的具体要求,如对抽象要求的盘块号转换为磁盘的盘面,磁道及扇区 。
检查 I/O请求的合理性 。
读出和检查设备的状态,确保设备处于就绪态 。
传送必要的参数,如传送的字节数,数据在主存的首址等 。
工作方式的设置 。
启动 I/O设备,并检查启动是否成功,如成功则将控制返回给
I/O控制系统,在 I/O设备忙于传送数据时,该用户进程把自己阻塞,直至中断到来才将它唤醒,而 CPU可干别的事 。
2.中断处理程序的处理过程在设备控制器控制下,I/O设备完成了 I/O操作后,控制器
(或通道)便向 CPU发出一中断请求,CPU响应后便转向中断处理程序,中断处理程序大致包含以下几步:
在设置 I/O进程时,当中断处理程序开始执行时,都必须去唤醒阻塞的驱动(程序)进程。在采用信号量机制时,可通过执行 V操作,将处于阻塞状态的驱动(程序)进程唤醒。
保护被中断进程的 CPU现场。
分析中断原因,转入相应的设备中断处理程序。
进程中断处理,判别此次 I/O完成是正常结束中断还是异常结束中断,分别作相应处理。
恢复被中断进程或由调度程序选中的进程的 CPU的现场。
返回被中断的进程,或进入新选中的进程继续运行。
在 UNIX中将以上对各类设备处理相同的部分集中起来,形成中断总控程序,每当要进行中断处理时,都要首先进入中断总控程序,再按需要转入不同的设备处理程序。
习题
1,在 I/O设备控制的发展过程中,最主要的推动因素是 ﹎﹎ A﹎
﹎,提高 I/O速度和设备利用率,在 OS中主要依靠 ﹎﹎ B﹎﹎
功能 。 使用户所编制的程序与实际使用的物理设备无关是由
﹎﹎ C﹎﹎ 功能实现的 。
A,( 1) 提高资源利用率; ( 2) 提高系统吞吐量; ( 3) 减少主机对 I/O控制的干预; ( 4) 提高 CPU与 I/O设备的并行操作程度 。
B,C,( 1) 设备分配; ( 2) 缓冲管理; ( 3) 设备管理; ( 4)
设备独立性; ( 5) 虚拟设备 。
2.通道是一种特殊的 ﹎﹎ A﹎﹎,具有 ﹎﹎ B﹎﹎ 能力。
A:( 1) I/O 设备;( 2)设备控制器;( 3)处理机;( 4)
I/O控制器。
B:( 1)执行 I/O指令集;( 2)执行 CPU指令集;( 3)传输
I/O命令;( 4)运行 I/O进程。 (解 )
习题 -1
2.假定把磁盘上一个数据块中信息输入到一单缓冲的时间 T为
100us,将缓冲区中数据传送到用户区的时间 M为 50us,而 CPU
对这一块数据进行计算的时间 C为 50us,这样,系统对每一块数据的处理时间为 ﹎﹎ A﹎﹎ ;如果将单缓冲改为双缓冲,则系统对每一块数据的处理时间为 ﹎﹎ B﹎﹎ 。
A,B:( 1) 50us;(2)100us;(3)150us;(4)200us;(5)250us。
3,下面关于设备独立性的论述中,第 ﹎﹎ A﹎﹎ 条是正确的论述 。
( 1) 设备独立性是 I/O设备具有独立执行 I/O功能的一种特性 。
( 2) 设备独立性是指用户程序独立于具体使用的物理设备的一种特性。
( 3) 设备独立性是指能独立实现设备共享的一种特性。
( 4) 设备独立性是指设备驱动独立于具体使用的物理设备的一种特性。 (解 )
习题 -2
5,下面关于虚拟设备的论述中,第 ﹎﹎ A﹎﹎ 条是正确的论述 。
( 1) 虚拟设备是指允许用户使用比系统中具有的物理设备更多的设备 。
( 2) 虚拟设备是指允许用户以标准化方式来使用物理设备。
( 3) 虚拟设备是把一个物理设备变换成多个对应的逻辑设备。
( 4) 虚拟设备是指允许用户程序不必全部装入内存便可使用系统中的设备。
6.下列有关 SPOOLing系统的论述中,第 ﹎﹎ A﹎﹎ 和第 ﹎﹎ B﹎
﹎ 条是正确的论述。
( 1) 构成 SPOOLing系统的基本条件,是具有外围输入机与外围输出机。
( 2) 构成 SPOOLing系统的基本条件,是只要具有大容量、高速硬盘作为输入井与输出井。
( 3) 只要操作系统中采用了多道程序设计技术,就可以构成
SPOOLing系统。
习题 -3
( 4) SPOOLing系统是建立在分时系统中。
( 5) SPOOLing系统是虚拟存储技术的体现。
( 6) SPOOLing系统是在用户程序要读取数据时起动输入进程输入数据。
( 7) 当输出设备忙时,SPOOLing系统中的用户程序暂停执行,
待 I/O 空闲时再被唤醒,去执行输出操作。
( 8) SPOOLing系统实现了对 I/O设备的虚拟,只要输入设备空闲,SPOOLing可预先将输入数据从设备传输到输入井中供用户程序随时读取。
( 9) 在 SPOOLing系统中,用户程序可以随时将输出数据送到输出井中,待输出设备空闲时再执行数据输出操作。
(解 )
7.试述多通路 I/O系统设备管理中数据结构。 (解 )