第11章 设备管理 (Chapter 11 Device Management)
内容提要 计算机I/O子系统的组成 OS设备管理模块的结构 I/O缓冲技术 磁盘调度策略 RAID技术
11.1 I/O DEVICES
物理I/O设备的分类 Human Readable Devices(人们可读设备) Such as Keyboard, Mouse, Display, Printer and so on; Machine Readable Devices(机器可读设备) Such as Controller, Sensor, Tape Drive, Disk Drive and so on; Communication Devices Such as Modem, Network Adapter and so on.
提 示 关于物理I/O设备的分类并非是唯一的。事实上,根据物理I/O设备之间的差异,人们可以给出关于物理I/O设备的多种分类。
物理I/O设备之间的差异 数据表示(Data Representation)不同 数据传输单位(Data Transfer Unit)不同 数据传输速率(Data Transfer Rate)不同 (见表11。1 P452) 控制复杂性(Complexity of Control)不同 错误条件(Error Conditions)不同 应用(Application)不同
11.2 ORGANIZATION OF THE I/O FUNCTION 循环测试(Cyclic Test)方式 中断驱动(Interrupt-Driven)方式 DMA控制(DMA Control)方式
物理I/O设备控制方式的演变 (1) 在早期的计算机系统中,由于没有引入 I/O控制器,因而CPU只能直接控制I/O设备。这就要求CPU的指令集必须包含驱动各种 I/O设备的指令,使 CPU与 I/O设备之间的合作方式是串行的。
物理I/O设备控制方式的演变 (2) 当引入非中断 I/O控制器后,CPU便可以通过 I/O控制器间接地控制I/O设备。这意味着CPU的指令集可以被简化。然而由于没有引入中断机制, CPU 只能采用循环测试方式控制 I/O设备。故CPU与 I/O设备之间的合作方式仍然是串行的。
物理I/O设备控制方式的演变 (3) 随着中断机制的引入,CPU与I/O设备之间的合作方式也由原来的串行方式改变为并行方式。 这意味着CPU不再“忙等”I/O设备操作完毕,从而提高了CPU的利用率。
物理I/O设备控制方式的演变 (4) DMA 控制器的引入使得 I/O 设备与存储器之间可以交换一块数据而无需CPU的介入。这意味着CPU与I/O设备之间的并行度得到了进一步提高, 从而 CPU的利用率也得到了进一步提高。
物理I/O设备控制方式的演变 (5) 与DMA控制器不同,I/O通道(I/O Channel) 和 I/O处理机(I/O Processor) 可以执行专门的程序来控制 I/O设备。 这意味着 I/O设备的大部分控制工作可以交给I/O通道或I/O 处理机来完成。 显然,I/O通道 和 I/O处理机的引入可以使CPU最大限度地摆脱I/O设备控制事务, 从而最大限度地提高了CPU的利用率。
DMA控制器的组成原理
DMA控制器的工作原理 (1) 当CPU欲把一块数据从某I/O设备读入内存某处或把一块数据从内存某处写入某I/O设备时,CPU将把相关数据块的长度通过DMA的“Data Lines”脚写入DMA的“Data Count”寄存器中,把内存起始地址和I/O设备地址通过DMA的“Data Lines”脚写入DMA的“Address Register”寄存器中,同时通过DMA的 “Read” 脚或“Write”脚向DMA发出读或写命令。
DMA控制器的工作原理 (2) 在工作期间,DMA将通过“DMA Request”脚 和 “DMA Acknowledge”脚控制相关的I/O设备,通过“Data Lines”脚与I/O设备以及内存交换数据,并通过“Address Lines”脚寻址内存。
DMA控制器的工作原理 (3) 一旦工作完毕,DAM将通过“Interrupt”脚向CPU发出中断,以便CPU对本次数据传输进行善后处理。
DMA控制器的工作原理 (4) 为了在工作期间建立与I/O设备以及与内存的数据交换通道,DMA将通过窃取CPU总线周期的方式获得总线控制权。
单总线、分离的DMA
单总线、集成的DMA-I/O
I/O总线
计算机I/O子系统的组成 (1)
计算机I/O子系统的组成 (2)
11.3 OPERATING SYSTEM DESIGN ISSUES
Design Objectives 设备管理模块的设计目标 通用性(Generality) 各种物理 I/O设备千差万别的构造细节以及种类繁多的操作命令令应用程序员们望而生畏。人们希望OS设备管理模块能够屏蔽各种物理 I/O设备千差万别的构造细节并用几个简洁的、统一的操作命令取代各种物理 I/O设备种类繁多的操作命令。 效率(Efficiency) 慢速的 I/O设备一直是制约计算机系统工作效率的瓶颈。人们希望OS设备管理模块能够突破这一瓶颈从而提高计算机系统的工作效率。
Logical Structure of the I/O Function (I/O功能的逻辑结构) 为了实现“通用性”这一设计目标,大多数OS其设备管理模块采用了分层结构。之所以是因为,在分层结构中,上层可以屏蔽下层的实现细节并可以抽象下层的操作属性。
Logical I/O (逻辑I/O层) 所谓逻辑I/O设备是指,应用软件所引用的用于实现I/O操作的设备。用户并不关心实际控制设备的细节,这也叫与设备无关性。 从应用软件的角度看,逻辑I/O设备是一类具有相同或相似属性的物理I/O设备的抽象。
Device I/O (设备I/O层) 请求的操作和数据(缓冲的数据,记录等)被转换成适当的I/O指令序列。通道命令和控制器指令。为提高使用率,可以使用缓冲技术。
Cheduling and Control (调度和控制层) 关于I/O操作的排队、调度和控制实际上发生在这一层。因此,可以在这一层处理中断,收集并报告I/O状态。这一层是与I/O模块和设备硬件真正发生交互的软件层。
Directory management (目录管理) 在这一层,符号文件名被转换成标识符,用标识符可以通过文件描述符表或索 引表直接或间接地访问文件。这一层还处理影响文件目录的用户操作,如添加、删除、重新组织等。
File system (文件系统) 这一层处理文件的逻辑结构以及用户指定的操作,如打开、关闭、读、写等。这 一层还管理访问权限。
Physical organization (物理组织) 考虑到分段和分页结构,虚存地址必须转换成物理主存地址,考虑到辅存设备的物理磁道和扇区结构,关于文件和记录的逻辑访问必须转换成物理辅存地址。空间的分配也在这一层。
11.4 I/O BUFFERING 假定:一个用户进程将从磁带上陆续读入若干块数据并分别对它们进行处理;为此,该用户进程在其虚拟存储器中位于1000~1099 的地方开辟了一个长度为100个字节的工作区;该工作区的长度正好等于磁带上的一块数据的长度。 请问:当用户进程在运行期间需要从磁带上读入一块数据时,如果OS设备管理模块从磁带上读进一块数据并直接把它送入用户进程的工作区,那么这种做法会导致什么样的问题?
问 题 用户进程必须暂停运行以便等待慢速的磁带机完成输入工作。很明显,用户进程的运行速度将受制于磁带机的工作速度。 问 题 用户进程必须暂停运行以便等待慢速的磁带机完成输入工作。很明显,用户进程的运行速度将受制于磁带机的工作速度。 用户进程暂停运行后并不能被完整地交换出内存;至少用于存放磁带数据的工作区必须驻留在内存中。否则,会导致单进程死锁。
许多OS通过引入I/O缓冲技术来提高用户进程的运行效率、缩短其周转时间。 提高用户进程运行效率的方法 许多OS通过引入I/O缓冲技术来提高用户进程的运行效率、缩短其周转时间。
逻辑I/O设备的分类 字符设备 块设备 也叫面向流的设备(Stream-Oriented Device); 也叫面向块的设备(Block-Oriented Device); 应用软件以块为单位读写此类逻辑I/O设备。
I/O缓冲技术 I/O缓冲技术的核心思想是:在内存中建立I/O缓冲区用于缓存从输入设备流入内存的数据或缓存从内存流向输出设备的数据。
缓冲单元 对于字符设备 对于块设备 字节缓冲:每个I/O缓冲区缓存一个字符或一个字节 可用于键盘输入等 行缓冲:每个I/O缓冲区缓存一个字符串或长度可变的多个字节 可用于显示输出、打印输出等 对于块设备 块缓冲:每个I/O缓冲区缓存固定长度的多个字节(即一块数据) 可用于磁盘、磁带等输入输出
提 示 下面我们继续以“用户进程读块设备”为例来讨论“如何组织I/O缓冲区”这样一个问题。
I/O缓冲区的一般组织形式 单缓冲区(Single Buffer) 双缓冲区(Double Buffer) 循环缓冲区(Circular Buffer)
单缓冲区
分 析 假定,一块数据从外部设备输入到内存所花费的时间为T,在内存中移动所花费的时间为M,被用户进程加工处理所花费的时间为C,那么 分 析 假定,一块数据从外部设备输入到内存所花费的时间为T,在内存中移动所花费的时间为M,被用户进程加工处理所花费的时间为C,那么 在没有使用I/O缓冲区的情况下,平均每块数据的处理时间近似为:T+C; 在使用单I/O缓冲区的情况下,平均每块数据的处理时间近似为:max(T,C)+M。
双缓冲区
说 明 对于OS设立的双I/O缓冲区,外部设备和应用进程常常交替引用。因此,I/O缓冲区的这种组织形式也被人们称为缓冲交换(Buffer Swapping)。
循环缓冲区
11.5 DISK SCHEDULING 处理机的速度和主存速度远远超过磁盘访问速度。 提高磁盘存储子系统的性能是至关重要的。 与磁盘性能有关的主要参数是:寻道时间、旋转延迟时间、传送时间。
磁盘访问时间分成以下三部分: 磁盘I/O传送时序(P464) 1)寻道时间: 这是指把磁臂(磁头)移动到指定磁道上所经历的时间。 2)旋转延迟时间: 这是指定扇区移动到磁头下面所经历的时间。 3)传输时间: 这是指把数据从磁盘读出或向磁盘写入数据所经历的时间。 磁盘I/O传送时序(P464)
Disk Scheduling Policies (磁盘调度策略) 磁盘是可供多个进程共享的设备,当有多个进程都要求访问磁盘时,应采用一种最佳调度算法,以使各进程对磁盘的平均访问时间最小。 目前常用的磁盘调度算法有:
先来先服务FCFS 根据进程请求访问磁盘的先后次序进行调度。 此算法的优点是公平、简单,且每个进程的请求都能依次地得到处理,不会出现某一进程的请求长期得不到满足的情况。 先来先服务FCFS (见表11.2 P467 见表11.3 P468)
最短寻道时间优先SSTF 该算法选择这样的进程,其要求访问的磁道,与当前磁头所在的磁道距离最近,以使每次的寻道时间最短, 最短寻道时间优先(SSTF)示意表和图 (见表11.3 P467图11.7 P469 )
扫描(SCAN)算法 该算法优先考虑的是磁头当前的移动方向。例如,磁头自里向外移动, 并同时自里向外地访问,直至再无更外的磁道需要访问时,才将磁臂换向自外向里移动。(又常称之为电梯调度算法 ) 扫描(SCAN)算法(见表11.3 P467 见表11.7 P469)
循环扫描(CSCAN)算法 CSCAN算法规定磁头单向移动,例如,只是自里向外移动,当磁头移到最外的磁道并访问后,磁头立即返回到最里的欲访问磁道,亦即将最小磁道号紧接着最大磁道号构成循环,进行循环扫描。 循环扫描(CSCAN)算法(见表11.3 P467 见表11.3)
11.6 RAID (独立磁盘冗余阵列) 通过多个磁盘,多个独立的I/O请求可以并行地进行处理,只要他们所需的数据驻留在不同的磁盘中,这样可以提高系统的性能. 可以通过增加冗余度来提高信息可靠性. 关于多磁盘数据库设计已形成了一个标准方案,称为独立磁盘冗余阵列RAID (Redundant Array of Independent Disks)