设备管理的功能:
1. 状态跟踪 设备控制块是存放设备管 理和控制信息的数据结构。系统要掌握设备的状态。 |
2. 设备存取 实现对设备的存取操作。 |
3. 设备分配 在多用户的环境下,负 责设备的分配和回收。 |
4. 设备控制 设备控制包括设备的驱 动、完成和故障中断处理。 |
5. 提高设备工作效率 |
5.1 I/O系统
实际的计算机系统可以分为两类:
(1)总线系统(无通道)
(2)通道系统
5.2 I/O控制方式
5.2.1 程序I/O方式
出现在早期的计算机系统中,无中断结构。大致流程是输一个字符,CPU不断检测是否输完,若没有输完等待,输完了就检查,进行后续操作。
图中(a)示出了程 序I/O方式的流程。
5.2.2 中断驱动I/O控制方式
现代计算机系统中,有中断处理能力。大致流程是输一个字符,在输入过程中CPU去做其他事情,输完一个字符之后CPU检查,进行后续操作。
例如,从终端输入一个字符的时间约为100 ms,而将字符送入终端缓冲 区的时间小于0.1 ms。若采用程序I/O方式,CPU约有99.9 ms的时间处于 忙—等待的过程中。但采用中断驱动方式后,CPU可利用这99.9 ms的时 间去做其它的事情,而仅用0.1 ms的时间来处理由控制器发来的中断请求。 可见,中断驱动方式可以成百倍地提高CPU的利用率。
图中(b)示出了中断驱动方式的流程。
5.2.3 直接存储器访问(DMA)I/O控制方式
1. DMA(Direct Memory Access)控制方式的引入
DMA与中断驱动I/O类似,但是中断驱动I/O是以一个字节为单位进行I/O,而DMA是以块为单位。例如,为了从磁盘中读出1 KB的数据块,需要中断CPU 1K次。
为了进一步减少CPU对I/O的干预而引入了直接存储器访问方式,见图中(c)所 示。
DMA方式的特点是:
(1) 数据传输的基本单位是数据块,即在CPU与I/O设备之间,每次 传送至少一个数据块;
(2) 所传送的数据是从设备直接送入内存的,或者相反;
(3) 仅在传送一个或多个数据块的开始和结束时,才需CPU干预,整 块数据的传送是在控制器的控制下完成的。
可见,DMA方式较之中断驱动方式,进一步减少CPU的“干预” , 成百倍地减少了CPU对I/O的干预,进一步提高了CPU与I/O设备的并行操作程度。
3.DMA工作过程
我们以从磁盘读入数据为例,来说明DMA方式的工作流程。当 CPU要从磁盘读入一数据块时,便向磁盘控制器发送一条读命令。该 命令被送到其中的命令寄存器(CR)中。同时,还须发送本次要将数据 读入的内存起始目标地址,该地址被送入内存地址寄存器(MAR)中;本次要读数据的字(节)数则送入数据计数器(DC)中,还须将磁盘中的源地址直接送至DMA控制器的I/O控制逻辑上。然后,启动DMA控制器进行数据传送,以后,CPU便可去处理其它任务。此后,整个数据传送过程便由DMA控制器进行控制。
当DMA控制器已从磁盘中读入一个字(节)的数据并送入数据寄存 器(DR)后,再挪用一个存储器周期,将该字(节)传送到MAR所指示的 内存单元中。接着便对MAR内容加1,将DC内容减1。若减1后DC内 容不为0,表示传送未完,便继续传送下一个字(节);否则,由DMA 控制器发出中断请求。
5.2.4 I/O通道控制方式
1. I/O通道控制的引入
虽然DMA方式比起中断方式来已经显著地减少了CPU的干预,即已由以字(节)为单位的干预减少到以数据块为单位的干预,但CPU每发出一条I/O指令,也只能去读(或写)一个连续的数据块。而当我们需要一次去读多个数据块且将它们分别传送到不同的内存区域,或者相反时,则须由CPU分别发出多条I/O指令及进行多次中断处理才能完成。
通道本身具有指令存储和执行的功能
I/O通道方式是DMA方式的发展,它可进一步减少CPU的干预, 即把对一个数据块的读(或写)为单位的干预减少为对一组数据块的读 (或写)及有关的控制和管理为单位的干预。同时,又可实现CPU、通道 和I/O设备三者的并行操作,从而更有效地提高整个系统的资源利用率。
例如,当CPU要完成一组相关的读(或写)操作及有关控制时,只需向I/O通道发送一条I/O指令,以给出其所要执行的通道程序的首址和要访问的I/O设备,通道接到该指令后,通过执行通道程序便可完成 CPU指定的I/O任务。
2. 通道程序
通道是通过执行通道程序,并与设备控制器共同实现对I/O设备的控制的。通道程序是由一系列通道指令(或称为通道命令)所构成的。 通道指令与一般的机器指令不同,在它的每条指令中都包含下列诸信息:
(1) 操作码。操作码规定了指令所执行的操作,如读、写、控制等操作。
(2) 内存地址。内存地址标明字符送入内存(读操作)和从内存取出 (写操作)时的内存首址。
(3) 计数。该信息表示本条指令所要读(或写)数据的字节数。
(4) 通道程序结束位P。该位用于表示通道程序是否结束。P=1表示本条指令是通道程序的最后一条指令。
(5) 记录结束标志R。R=0表示本通道指令与下一条指令所处理的数据是同属于一个记录;R=1表示这是处理某记录的最后一条指令。
例子:
下面示出了一个由六条通道指令所构成的简单的通道程序。该程序的功能是将内存中不同地址的数据写成多个记录。
其中,前三条指令是分别将813~892单元中的80个字符和1034~1173单元中的140个字符及5830~5889单元中的60个字符写成一个记录;
第4条指令是单独写 一个具有300个字符的记录;
第5、6条指令共写含500个字符的记录。
5.3 缓冲管理
5.3.1 缓冲的引入
(1) 缓和CPU与I/O设备间速度不匹配的矛盾。
(2) 减少对CPU的中断频率,放宽对CPU中断响应时间的限制。
(3) 提高CPU和I/O设备之间的并行性。
5.3.2 单缓冲和双缓冲
1.单缓冲
在单缓冲情况下,每当用户进程发出一I/O请求时,操作系统便在 主存中为之分配一缓冲区。在块设备输入时,假定从磁盘把一块数据输入到缓冲区的时间为T,操作系统将该缓冲区中的数据 传送到用户区的时间为M,而CPU对这一块数据处理(计算)的时间为C。 由于T和C是可以并行的,当T>C时,系统对每一块数据的处理时间为M+T,反之则为M+C,故可把系统对每一块数据的处理时间表示为Max(C,T)+M。
2. 双缓冲
为了加快输入和输出速度,提高设备利用率,人们又引入了双缓冲 区机制,也称为缓冲对换。在设备输入时,先将数据送入第一缓冲区,装满后便转向第二缓冲区。此时操作系统可以从第一缓冲区中移出数据,并送入用户进程(见图)。接着由CPU对数据进行计算。在双缓冲时,系统处理一块数据的时间可以粗略地认为是Max(C,T)。如果C>T,则可使CPU不必等待设备输入。
对于字符设备,若采用行输入方式,则采用双缓冲通常能消除用户的等待时间,即用户在输入完第一行之后,在CPU执行第一行中的命令时,用户可继续向第二缓冲区输入下一行数据。
5.4 I/O软件
5.4.1 I/O软件的设计目标和原则
I/O软件应达到下面的几个目标:
(1)与具体设备无关 (2)统一命名 (3)对错误的处理 (4)缓冲技术 (5)设备的分配和释放 (6)I/O控制方式
目前在I/O 软件中已普遍采用了层次式结构,将系统中的设备操作和管理软件分为若干个层次,每一层都利用其下层提供的服务,完成输入、输出功能中 的某些子功能,并屏蔽这些功能实现的细节,向高层提供服务。
通常把I/O 软件组织成四个层次,各层次及其功能如下所述:
(1) 用户层软件:实现与用户交互的接口,用户可直接调用在用户层提供的、与I/O操作有关函数,对设备进行操作,如API或系统调用。
(2) 设备独立性软件:负责实现与设备驱动器的统一接口、设备命名、设备的保护以及设备的分配与释放等,同时为设备管理和数据传送提供必要的存储空间。
(3) 设备驱动程序:与硬件直接相关,负责具体实现系统对设备发出的操作指令,驱动I/O设备工作的驱动程序。
(4) 中断处理程序:用于保存被中断进程的CPU环境,转入相应的中断处理程序进行处理,处理完后再恢复被中断进程的现场后返回到被中断进程。
5.4.2 设备驱动程序
设备驱动程序通常又称为设备处理程序,它是I/O进程与设备控制器之间的通信程序,又由于它常以进程的形式存在,故以后就简称之为设 备驱动进程。
其主要任务是接收上层软件发来的抽象I/O要求,如read或 write命令,在把它转换为具体要求后,发送给设备控制器,启动设备去执行;此外,它也将由设备控制器发来的信号传送给上层软件。
由于驱动程序与硬件密切相关,故应为每一类设备配置一种驱动程序;有时也可为非常类似的两类设备配置一个驱动程序。例如,打印机和显示器需要不同的驱动程序,但SCSI磁盘驱动程序通常可以处理不同大小和不同速度的多个SCSI磁盘,甚至还可以处理SCSI CD-ROM。
1.设备驱动程序的功能
(1) 接收由设备独立性软件发来的命令和参数,并将命令中的抽象要求转换为具体要求,例如,将磁盘块号转换为磁盘的盘面、磁道号及扇区号。
(2) 检查用户I/O请求的合法性,了解I/O设备的状态,传递有关参数, 设置设备的工作方式。
(3) 发出I/O命令。如果设备空闲,便立即启动I/O设备去完成指定的 I/O操作;如果设备处于忙碌状态,则将请求者的请求块挂在设备队列上等待。
(4) 及时响应由控制器或通道发来的中断请求,并根据其中断类型调用相应的中断处理程序进行处理。
(5) 对于设置有通道的计算机系统,驱动程序还应能够根据用户的I/O请求,自动地构成通道程序。
5.4.3 设备独立性软件
1.设备独立性的概念(设备无关性)
(1)设备分配时的灵活性 (2)易于实现I/O重定向
2.设备独立性软件
驱动程序是一个与硬件(或设备)紧密相关的软件。为了实现设备独立性,必须再在驱动程序之上设置一层软件,称为设备独立性软件。
5.4.4 用户层的I/O软件
一般而言,大部分的I/O软件都在操作系统内部,但仍有一小部分在用户层,包括与用户程序链接在一起的库函数,以及完全运行于内核之外的一些程序。
用户层软件必须通过一组系统调用来取得操作系统服务。在现代的高级语言以及C语言中,通常提供了与各系统调用一一对应的库函数, 用户程序通过调用对应的库函数使用系统调用。
5.5 设备分配
5.5.1 设备分配中的数据结构
1.设备控制表(DCT)
系统为每一个设备都配置了一张设备控制表,用于记录本设备的情况。
(1) 设备队列队首指针:凡因请求本设备而未得到满足的进程, 其PCB都应按照一定的策略排成一个队列,称该队列为设备请求队列或简称设备队列。其队首指针指向队首PCB。在有的系统中还设置了队尾指针。
(2) 与设备连接的控制器表指针。该指针指向该设备所连接的控制器的控制表。在设备到主机之间具有多条通路的情况下,一个设备将与多个控制器相连接。此时,在DCT中还应设置多个控制器表指针。
2.控制器控制表、通道控制表和系统设备表
(1) 控制器控制表(COCT)。系统为每一个控制器都设置了一张用于记录本控制器情况的控制器控制表。
(2) 通道控制表(CHCT)。每个通道都配有一张通道控制表。
(3) 系统设备表(SDT)。这是系统范围的数据结构,其中记录了系统中全部设备的情况。每个设备占一个表目,其中包括有设备类型、设备标识符、设备控制表及设备驱动程序的入口等项。
5.5.2 设备分配时应考虑的因素
① 设备的固有属性;② 设备分配算法;③ 设备分配时的安全性; ④ 设备独立性。
1.设备固有属性可分为三种:
独占性;
共享性;
可虚拟设备(指设备本身虽是独占设备,但经过某种技术处理,可以把它改造成虚拟设备);
2.设备分配算法
(1) 先来先服务。 (2) 优先级高者优先。
SPOOLing技术
5.7 磁盘存储器管理
5.7.1 磁盘性能简述
1.数据的组织和结构
磁盘设备可包括一或多个物理盘片,每个磁盘片分一个或两个存储面(surface),每个磁盘面被组织成若干个同心环,这种环称为磁道(track), 各磁道之间留有必要的间隙。为使处理简单起见,在每条磁道上可存储相同数目的二进制位。这样,磁盘密度即每英寸中所存储的位数,显然 是内层磁道的密度较外层磁道的密度高。每条磁道又被逻辑上划分成若 干个扇区(sectors),软盘大约为8~32个扇区,硬盘则可多达数百个。
为了在磁盘上存储数据,必须先将磁盘低级格式化。
磁盘的每个扇区包含两个字段:
(1)标识符字段,其中一个字节的SYNCH具有特定的位图像,作为该字段的定界符,利用磁道号、 磁头号及扇区号三者来标识一个扇区;CRC 字段用于段校验。
(2)数据字段,用来存放数据。
例如:
一 种温盘(温切斯特盘)中一条磁道格式化。其中每条磁道含有30个固定大小的扇区,每个扇区容量为600个字节,其中512个字节存放数据,其余的用于存放控制信息。
2. 磁盘访问时间
(1)寻道时间Ts
这是指把磁臂(磁头)移动到指定磁道上所经历的时间。该时间是启动磁臂的时间s与磁头移动n条磁道所花费的时间之和,即
Ts = m ×n +s
其中,m是一常数,与磁盘驱动器的速度有关。对于一般磁盘,m=0.2; 对于高速磁盘,m≤0.1,磁臂的启动时间约为2 ms。这样,对于一般的温盘,其寻道时间将随寻道距离的增加而增大,大体上是5~30 ms。
(2)旋转延迟时间Tr
这是指定扇区移动到磁头下面所经历的时间。
不同的磁盘类型中, 旋转速度至少相差一个数量级,如软盘为300 r/min,硬盘一般为 7200~15 000 r/min,甚至更高。对于磁盘旋转延迟时间而言,如硬盘, 旋转速度为15000 r/min,每转需时4 ms,平均旋转延迟时间Tr为2 ms; 而软盘,其旋转速度为 300 r/min或600 r/min,这样,平均Tr为50~ 100 ms。
(3)传输时间Tt
这是指把数据从磁盘读出或向磁盘写入数据所经历的时间。Tt的大小与每次所读/写的字节数b和旋转速度有关:
Tt = b/rN
其中,r为磁盘每秒钟的转数;N为一条磁道上的字节数,当一次读/写的字节数相当于半条磁道上的字节数时,Tt与Tr相同。
当一次读/写的字节数相当于半条磁道上的字节数时,,可将访问时间Ta表示为
Ta = Ts + 1/2r + b/rN
5.7.2 磁盘高速缓存
1.磁盘高速缓存的形式
磁盘高速缓存,是指利用内存中的存储空间来暂存从磁盘中读出的一系列盘块中的信息。
高速缓存有两种形式:
➢ 在内存中设置
➢ 硬盘本身所带
硬盘的缓存主要起三种作用:
一是预读取。 二是对写入动作进行缓存。 第三个作用就是临时存储最近访问过的数据。
2.置换算法
磁盘数据读入内存时存在内存已满的情况,这时就要考虑置换问题了。
较常用的置换算法仍然:是最近最久未使用算法LRU、最近未使用算法NRU及最少使用算法LFU等。
5.7.4 廉价磁盘冗余阵列
1.并行交叉存取
就是将文件存放在多个磁盘上,将多个磁盘分成若干子盘,将文件分成多个子文件,分别放在这些磁盘的对应子盘上,这样存取时可以从多个磁盘对应位置同时存取,加快速度。
2.RAID的分级
(1) RAID 0级。是无数据冗余的存储空间条带化,具有成本低、读写 性能极高、存储空间利用率高等特点,适用于音、视频信号存储、临时文 件的转储等对速度要求极其严格的特殊应用。但由于没有数据冗余,其安 全性大大降低,构成阵列的任何一块硬盘的损坏都将带来灾难性的数据损 失。这种方式其实没有冗余功能,没有安全保护,只是提高了磁盘读写性能和整个服务器的磁盘容量。一般只适用磁盘数较少、磁盘容易比较紧缺 的应用环境中,如果在RAID 0中配置4块以上的硬盘,对于一般应用来说 是不明智的。
(2) RAID 1级。它具有磁盘镜像功能,例如,当磁盘阵列中具有8个盘时,可利用其中4个作为数据盘,另外 4 个作为镜像盘,在每次访问磁盘时,可利用并行读、写特性,将数据分块同时写入主盘和镜像盘。故其比传统的镜像盘速度快,但其磁盘容量的利用率只有50%,它是以牺牲磁盘 容量为代价的。
(3) RAID 3级。这是具有并行传输功能的磁盘阵列。它利用一台奇偶校验盘来完成数据的校验功能,比起磁盘镜像,它减少了所需要的冗余磁盘数。例如,当阵列中只有7个盘时,可利用6个盘作数据盘,一个盘作校验盘。磁盘的利用率为6/7。RAID 3级经常用于科学计算和图像处理。
(4) RAID 5级。这是一种具有独立传送功能的磁盘阵列。每个驱动器都各有自己独立的数据通路,独立地进行读/写,且无专门的校验盘。 用来进行纠错的校验信息,是以螺旋(Spiral)方式散布在所有数据盘上。 RAID 5级常用于I/O较频繁的事务处理中。
(5) RAID 6级和RAID7级。这是强化了的RAID。在RAID 6级的阵列中,设置了一个专用的、可快速访问的异步校验盘。该盘具有独立的数据访问通路,具有比RAID 3级及RAID 5级更好的性能,但其性能改进得很有限,且价格昂贵。RAID 7级是对RAID 6级的改进,在该阵列中的所有磁盘,都具有较高的传输速率和优异的性能,是目前最高档次的磁盘阵列,但其价格也较高。