第5章输入输出(I/O)管理 5.1 408考纲要求 (一)I/O管理概述 1.I/O控制方式 2.I/O软件层次结构 (二)I/O核心子系统 1.I/O调度概念 2. 高速缓存与缓冲区 3. 设备分配与回收 4. 假脱机技术(SPOOLing) 5.2 知识结构梳理 5.1 I/ O 管理概述 2. 连接到计算机上的设备多种多样。某些设备一次传输一个字或一块字。有些设备只能 第5章 输入输出(/O)管理 I 顺序访问,而有些可以随机访问。有些设备同步传输数据,而有些是异步传输。有些是专用 的,而有些则是共享的。有些设备只读,而有些则是读写皆可。它们的速度差别很大。不过 大部分情况下,它们都是整个计算机系统中最慢的部分。 I/ O 管理主要有两个目标。 (1)提高设备的利用率。应尽量提高CPU 与I/ O 设备之间的并行操作程度,主要利用 的技术有中断技术、DMA 技术、缓冲技术。 (2)为用户提供方便、统一的界面。方便是指用户能独立于具体设备的复杂物理特性 之外而方便地使用设备。统一是指对不同的设备尽量使用统一的操作方式,例如各种字符 设备用一种I/ O 操作方式。这就要求用户操作的是简便的逻辑设备,而具体的I/ O 物理设 备由操作系统实现,这种性能常常被称为设备的独立性。 I/ O 管理功能主要有3个。 (1)设备分配。设备管理程序按照一定的算法把某个I/ O 设备及其相应的设备控制器 分配给某一进程,对于未分配到的进程,则在等待队列中等待。 (2)缓冲区管理。为了解决CPU 与I/ O 之间速度不匹配的矛盾,在它们之间配置了缓 冲区。设备管理程序需要负责管理缓冲区的建立、分配和释放等。 (3)实现物理I/ O 设备的操作。设备管理程序直接驱动设备进行I/ O 操作。 1.I/ O 控制方式 I/ O 的控制方式可分为程序I/ O 方式、中断方式和直接存储器访问(directmemory aces,DMA)方式。 1)程序I/ O 方式 在早期的计算机系统中,处理机对I/ O 设备直接进行控制,采取程序I/ O 方式,也称轮 询方式,即在CPU 向设备控制器发出一条I/ O 指令启动I/ O 设备进行数据传输时,要同时 把状态寄存器中的忙/闲标志busy置为1,然后便不断地循环测试busy。当busy=l时,表 示该I/ O 设备尚未输入完一个字(符),CPU 应继续对该标志进行测试,直至busy=0,表示 该I/ O 设备已将输入数据送入I/ O 控制器的数据寄存器中,于是CPU 将从数据寄存器中取 出数据,送入内存的指定单元,接着,再启动去读下一个数据,并置busy=l。 在程序I/ O 方式中,由于CPU 的速度远远高于I/ O 设备,导致CPU 的绝大部分时间都 处于等待I/ O 设备操作完成而不断循环测试之中,造成了CPU 的极大浪费。但是它管理简 单,在要求不高的场合可以被采用。 2)中断方式 interup 在现代计算机系统中,对I/ O 设备的控制,广泛地采用中断(t)方式,即当某进 程要启动某个I/ O 设备时,便由CPU 向相应的设备控制器发出一条I/ O 命令,然后立即返 回继续执行原来的任务。设备控制器便按照该命令的要求去控制I/ O 设备。此时,CPU 与 I/ O 设备处于并行工作状态。例如,在输入时,当设备控制器收到CPU 发来的读命令后,便 准备接收从相应输入设备送来的数据。一旦数据进入数据寄存器,控制器便通过控制线向 CPU 发送一中断信号,由CPU 检查输入过程中是否出错,若无错,便向控制器发取走数据 的信号,然后通过控制器将数据写入指定内存单元。 中断方式在I/ O 设备输入数据的过程中,无须CPU 干预,可以使CPU 与I/ O 设备并行 323 全国硕士研究生招生考试计算机科学与技术学科联考 操作系统复习指导与真题解析 工作。仅当输入完一个数据时,才需CPU 花费极短的时间进行中断处理。从而大大地提高 了整个系统的资源利用率及吞吐量,特别是CPU 的利用率。 3)DMA 方式 中断方式虽然大大提高了主机的利用率,但是它以字或字节为单位进行数据传送,每完 成一个字或字节的传送,控制器便要向CPU 请求一次中断(保存现场信息,恢复现场等工 作),仍然占用了CPU 的许多时间。这种方式对于高速的块设备的I/ O 控制显然不适合。 为了进一步减少CPU 对I/ O 的干预,引入了DMA 控制方式。该方式的特点如下。 (1)作为高速的外围设备与内存之间成批的数据交换,但是不对数据再做加工处理,数 据传输的基本单位是数据块,/ O 操作的类型比较简单。 (2)需要使用一个专门的 IDMA 控制器(DMAC )。 (3)采用盗窃总线控制权的方法,由DMAC 送出内存地址和发出内存读、设备写或设 备读、内存写的控制信号来完成内存与设备之间的直接数据传送,而不用CPU 干预。有的 DMA 传送甚至不经过DMAC 的数据缓冲寄存器的再吞吐,传输率非常高。 (4)仅在传送一个或多个数据块的开始和结束时,才需要CPU 干预,整块数据的传送 是在控制器的控制下完成的。 DMA 方式较之中断驱动方式,减少了CPU 对I/ O 控制的干预,进一步提高了CPU 与 I/ O 设备的并行操作程度。 2.I/ O 软件层次结构 I/ O 系统调用实现统一的I/ O 接口。I/ O 系统调用封装了设备通用类型行为。每个通 用类型都可以通过一组标准函数(接口)来访问,如块设备I/ O 系统调用包括磁盘、固态硬 盘、磁带等一系列块设备的read、write、sek操作。具体的I/ O 差别被内核模块(设备驱动 程序)所封装,这些设备驱动程序一方面可以定制以适合各种设备,另一方面也提供了一组 标准接口。图5./ O 相关部分是如何按软件层来组织的。 1说明了内核与I 图5.1 内核I/ O 结构 324 第5章 输入输出(/O)管理 I 设备驱动程序的作用是为内核I/O子系统隐藏设备控制器之间的差异。 5.2 I/ O 核心子系统 2. 内核I/O子系统以系统调用方式提供若干服务,其中有I/O调度、缓冲、假脱机、出错处 理和设备预留。 内核I/O子系统负责:文件和设备命名空间的管理、访问控制、操作控制,文件系统空 间的分配、设备分配,缓冲、高速缓存、假脱机,I/O调度,设备状态监控、错误处理、I/O保 护,设备驱动程序的配置和初始化等。 1.I/ O 调度概念 I/O调度是按照某种策略来为请求I/O的进程分配设备。通过I/O调度能改善系统整 体性能,在进程之间公平地共享设备,减少因I/O所需要的等待时间。 操作系统通过为每台设备维护一个请求队列来实现调度。当一个应用程序执行系统调 用请求I/O时,该请求就加到相应设备的队列上。I/O调度重新安排队列顺序以改善系统 总体效率和应用程序的平均响应时间。 2. 缓冲区与高速缓存 为了解决CPU 与I/O设备间速度不匹配的矛盾,提高I/O速度和设备利用率,在所有 的I/O设备与处理机之间,操作系统都使用了缓冲区来交换数据。 缓冲技术实现基本思想:当一个进程执行操作输入数据时,先向系统申请一个主存区 域———缓冲区,系统将一个物理记录的内容读到缓冲区域中,然后根据进程要求,把当前需 要的逻辑记录从缓冲区中选出并传送给进程。当一个进程执行写操作输出数据时,先向系 统申请一个主存区域———缓冲区,然后,将数据高速送到缓冲区。若为顺序写请求,则不断 把数据填到缓冲区,直到它被装满为止。此后,进程可以继续它的计算,同时,系统将缓冲区 内容写到I/O设备上。 在操作系统管理下,常常设置许多专用主存区域的缓冲区来服务于各种设备,支持I/O 管理功能。常用的缓冲技术有单缓冲、双缓冲、多缓冲。 高速缓存(cache)是可以存储数据副本的高速内存。对高速缓冲中的数据的访问要比 普通内存数据访问更为高效。缓冲和高速缓存的区别是缓冲只保留数据仅有的一个现存副 本,而高速缓存只是提供了一个存储在其他地方的数据的一个高速副本。 3. 设备分配与回收 在多道程序环境下,设备必须由系统分配。每当进程向系统提出I/O请求时,设备分配 程序按照一定的策略,把其所需的设备及有关资源(如缓冲区、控制器和通道)分配给该进 程。在分配设备时还必须考虑系统的安全性,避免发生死锁现象。 为了使系统能够安全高效地工作,系统在进行设备分配时应考虑的因素包括设备的固 有属性、设备的分配算法、设备分配的安全性和设备的独立性。 325 全国硕士研究生招生考试计算机科学与技术学科联考 操作系统复习指导与真题解析 1)设备的固有属性 在分配设备时,首先应考虑设备的属性。根据设备的固有属性采取以下3种策略。 (1)独享方式。独享方式是指将一台设备分配给进程后,便一直由它独占,直至该进程 完成或释放该设备为止,系统才能将该设备分配给其他进程使用。这种分配方式是对独占 设备采用的分配策略。它不仅往往造成设备利用率低,而且还会引起系统死锁。 (2)共享方式。共享方式是指将共享设备(磁盘)同时分配给多个进程使用。这些进程 对设备的访问要进行合理的调度。 (3)虚拟方式。虚拟方式是指通过高速的共享设备,把一台慢速的以独占方式工作的 物理设备改造成若干虚拟的同类逻辑设备,这就需要引入假脱机技术。虚拟设备属于逻辑 设备 2 。 )设备的分配算法 与进程的调度算法相似,通常只采用以下两种分配算法。 (1)先来先服务(isomefrtsrie,算法。当多个进程同时向某一设备提 frtcisevcFCFS) 出I/O请求时,该算法就根据对该设备提出请求的先后次序将这些进程排列成一个设备请 求队列,设备分配程序把设备首先分配给队首进程。 (2)优先级(priority)算法。对优先级高的进程所提出的I/O请求赋予高优先级,在形 成设备队列时,将优先级高的进程排在设备队列前面,先得到分配。而对于优先级相同的I/ O请求,则按先来先服务原则排队分配。 3)设备分配的安全性 (1)安全分配方式。每当进程发出一个I/O请求后,便进入阻塞状态,直到其I/O操作 完成时才被唤醒。当它运行时不保持任何设备资源,打破了产生死锁的一个必要条件——— 请求和保持,所以这种分配方式是安全的。但是这种分配方式使得CPU 与I/O设备串行工 作,设备的利用率比较低。 (2)不安全分配方式。进程发出一个I/O请求后仍可以继续运行,需要时还可以发出 第二个I/O请求、第三个I/O请求。只有当进程所请求的设备已被另一个进程占用时,进程 才进入阻塞状态。这种分配方式是不安全的,因为它可能具备“请求和保持”条件,从而可能 造成系统死锁。所以,在设备分配程序中应该增加安全性检查的功能。 4)设备的独立性 为了提高操作系统的可适应性和可扩展性,目前几乎所有的操作系统都实现了设备的 独立性(也称设备无关性)。其基本思想:用户程序不直接使用物理设备名(或设备的物理 地址), 而只能使用逻辑设备名。系统在实际执行时,将逻辑设备名转换为某个具体的物理 设备名,实施I/O操作。 逻辑设备是实际物理设备属性的抽象,它并不限于某个具体设备。 4. 假脱机技术(SPOOLing) 独占设备每次只能分配给一个进程使用,这种使用特性隐含着死锁的必要条件,所以在 考虑独占设备的分配时,一定要结合有关防止和避免死锁的安全算法。 326 第5章 输入输出(/O)管理 I 系统中的独占设备是有限的,往往不能满足诸多进程的要求,会引起大量进程由于等待 某些独占设备而阻塞,成为系统中的“瓶颈”。另外,申请到独占设备的进程在其整个运行期 间虽然占有设备,利用率却常常很低,设备还是经常处于空闲状态。为了解决这种矛盾,最 常用的方法就是用共享设备来模拟独占设备的操作,从而提高系统效率和设备利用率。这 种技术称为虚拟设备技术,实现这一技术的软硬件系统被称为假脱机(simultaneous peripheraloperationsonline,SPOOL)系统,也称SPOOLing系统。 SPOOLing系统通常分为输入SPOOLing和输出SPOOLing,两者工作原理类似。下 面就以常见的共享打印机为例,说明输出SPOOLing的基本原理。 打印机是一种典型的独占设备,引入SPOOLing技术后,用户的打印请求传递给 SPOOLing系统,而不是真正把打印机分配给用户。SPOOLing系统的输出进程在磁盘上 申请一个空闲区,把需要打印的数据传送到里面,再把用户的打印请求挂到打印队列上。如 果打印机空闲,就会从打印队列中取出一个请求,再从磁盘上的指定区域取出数据,执行打 印操作。由于磁盘是共享的,SPOOLing系统可以随时响应打印请求并把数据缓存起来,这 样就把独占设备改造成了共享设备,从而提高了设备的利用率和系统效率。 5.3 典型真题、同步测试练习及分析 5.1 单项选择题 3. 1 下面关于虚拟设备的论述中,( ) 是正确的。 A. 虚拟设备是指允许用户使用比系统中具有的物理设备更多的设备 B. 虚拟设备是指允许用户以标准化方式来使用物理设备 C. 虚拟设备是把一个物理设备变换成多个对应的逻辑设备 D. 虚拟设备是指允许用户程序不必全部装入内存便可使用系统中的设备 C。 虚拟设备是指使用虚拟技术把独占设备改造成为多用户共享的设备,也就要把 一台具体的物理设备变换为若干逻辑设备,故 C 正确。 2 (2010) 本地用户通过键盘登录系统时,首先获得键盘输入信息的程序是( )。 327 34 全国硕士研究生招生考试计算机科学与技术学科联考 操作系统复习指导与真题解析 A. 命令解释程序B. 中断处理程序 C. 系统调用服务程序D. 用户登录程序 B。 键盘输入产生一个硬件中断,由键盘中断实现,处理键盘中断的是中断处理 程序。 从使用的角度来分析设备的特性,可以把设备分成( )。 A. 物理设备和逻辑设备B. 字符设备和块设备 C. 低速设备和高速设备D. 独占设备和共享设备 D。 按资源分配的角度分类,可以把设备分成独占设备、共享设备和虚拟设备。 (2009) 在处理机系统中,可并行的是( )。 Ⅰ . 进程与进程Ⅱ . 处理机与设备 Ⅲ . 处理机与通道Ⅳ . 设备与设备 A. Ⅰ、Ⅱ和Ⅲ B. Ⅰ、Ⅱ和Ⅳ C. Ⅰ、Ⅲ和Ⅳ D. Ⅱ、Ⅲ和Ⅳ D。 在单处理机不考虑多核情况下,某时刻处理机只能执行一个进程,所以进程与进 程之间不能并行执行。处理机、通道、设备都能并行执行。读者需要理解并行和 并发两个概念。 5 下面关于设备属性的论述中,正确的是( )。 A. 字符设备的基本特征是可寻址到字节,即能指定输入的源地址或输出的目标 地址 B. 共享设备必须是可寻址的和可随机访问的设备 C. 共享设备是指同一时刻内允许多个进程同时访问的设备 D. 在分配共享设备和独占设备时都可能引起进程死锁 B。 字符设备的基本特征是不可寻址到字节;共享设备是指同一时间段内允许多个 进程同时访问的设备;在分配独占设备时可能引起进程死锁,在分配共享设备时 不会引起进程死锁。 6 在磁盘和磁带这两种磁表面存储器中,存取时间与存储单元的物理位置有关。 328 第5章 输入输出(/O)管理 I 按存取方式分( )。 A. 二者都是顺序存取 B. 二者都是随机半顺序存取 C. 磁盘是随机半顺序存取,磁带是顺序存取 D. 磁盘是顺序存取,磁带是随机半顺序存取 C。 磁表面存储器是通过磁头和记录介质的相对运动完成写入和读出,因此其存取 时间与存储单元的物理位置有关。按存取方式分磁盘是随机半顺序存取,磁带 是顺序存取。 7 (2009) 程序员利用系统调用打开I/ O 设备时,通常使用的设备标识是( )。 A. 逻辑设备名B. 物理设备名C. 主设备号D. 从设备号 A。 在操作系统的设备管理中,用户程序不直接使用物理设备名(或设备的物理地 址), 而使用逻辑设备名;系统在实际执行时,将逻辑设备名转换为某个具体的物 理设备名,实施I/ O 操作。逻辑设备是实际物理设备属性的抽象,它并不限于某 个具体设备。 8 从下列关于驱动程序的论述中,( ) 是正确的。 A. 驱动程序与I/ O 设备的特性紧密相关,因此应为每一I/ O 设备配备一个驱动 程序 B. 驱动程序与I/ O 控制方式紧密相关,因此对DMA 方式应是以字节为单位启动 设备及进行中断处理 C. 由于驱动程序与I/ O 设备(硬件)紧密相关,故必须全部用汇编语言书写 D. 对于一台多用户机,配置了相同的16 个终端,此时可以只配置一个由多个终 端共享的驱动程序 D。 设备驱动程序是I/ O 进程与设备控制器之间的通信程序。通常一个设备驱动程 序对应处理一种设备类型,或者至多一类密切联系着的设备。系统往往对略有 差异的一类设备提供一个通用的设备驱动程序。 9 I/ O 系统有 3 种常用方式来与主机交换数据,它们是程序轮询方式、中断方式和 DMA 方式,其中DMA 方式主要由硬件来实现,此时高速外设和内存之间进行数 据交换( )。 A. 不通过CPU 的控制,不利用系统总线 329 全国硕士研究生招生考试计算机科学与技术学科联考 操作系统复习指导与真题解析 B. 不通过CPU 的控制,利用系统总线 C. 通过CPU 的控制,不利用系统总线 D. 通过CPU 的控制,利用系统总线 B。 DMA 方式是一种完全由硬件执行I/ O 数据交换的工作方式,它需要使用一个专 门的DMA 控制器(DMAC )。在这种方式中,DMAC 采用盗窃总线控制权的方法 从CPU 接管对总线的控制,成批的数据交换不经过CPU 而直接在内存和I/ O 设 备之间进行。 10 CPU 输出数据的速度远远高于打印机的打印速度,为解决这一矛盾可采用( )。 A. 并行技术B. 通道技术C. 缓冲技术D. 虚拟技术 C。 为解决设备间传输率不匹配问题,通常采用缓冲技术。通道技术能最大地使 CPU 摆脱外设的传输率制约,并行技术能有效地提高CPU 与外设的效率,虚拟 技术则能提高打印机的利用率。这些技术虽能有效地缓解CPU 输出数据的速 度远远高于打印机的打印速度的矛盾,但针对本题,最佳答案应该为C。 11 如果I/ O 所花费的时间比CPU 处理时间短得多,则缓冲区( )。 A. 最有效B. 几乎无效 C. 均衡D. 以上 3 项都不是 B。 由于I/ O 设备的速度跟不上CPU,而使CPU 长时间等待。如果设置了缓冲区,程 序I/ O 的数据先送到缓冲区暂存,然后由I/ O 设备慢慢地输入输出。这时,CPU 不必等待,可以继续执行程序,实现了CPU 与I/ O 设备之间的并行工作。如果I/ O 所花费的时间比CPU 处理时间短得多,则缓冲区几乎无效。 12 下列有关SPOOLing 系统的论述中正确的是( )。 A. 构成SPOOLing 系统的基本条件是具有外围输入机与外围输出机 B. 在SPOOLing 系统中,用户程序可以随时将输出数据送到输出井中,待输出设 备空闲时再执行数据输出操作 C. 只要操作系统中采用了多道程序设计技术,就可以构成SPOOLing 系统 D. 当输出设备忙时,SPOOLing 系统中的用户程序暂停执行,待I/ O 设备空闲时 再被唤醒,执行输出操作 B。 构成SPOOLing 系统的基本条件之一是多道程序设计技术,要有大容量、高速的 330 1314 15 第5章 输入输出(/O)管理 I 外存作为输入井和输出井,不需要外围输入机与外围输出机,因此A、 C 不全面。 同时利用SPOOLing 技术,提高了系统和I/ O 设备的利用率,进程不必等待I/ O 操作的完成,因此 D 也不对。 SPOOLing 系统利用一个程序来模拟脱机输入时的外围控制机的功能,再用另一 个程序来模拟脱机输出时外围控制机的功能,把用户要求输出的数据,随时从内 存送到输出井,待输出设备空闲时,再将输出井中的数据,经过输出缓冲区送到 输出设备上。这样,便在主机的直接控制下,实现脱机输入、输出功能。 访问磁盘的时间不包括( )。 A. 寻道时间B. CPU 调度时间C. 传输时间D. 旋转延迟时间 B。 访问磁盘的时间由 3 部分组成,即寻道时间、旋转延迟时间和传输时间,不包括 CPU 调度时间。 在操作系统中,用户在使用I/ O 设备时,通常采用( )。 A. 设备的绝对号B. 设备的相对号C. 虚拟设备号D. 设备名 B。 一般来说,系统按照某种原则为每台设备分配一个唯一的号码,用作硬件(设备 控制器)区分和识别设备的代号,称作设备的绝对号。它如同内存中每一单元都 有一个地址那样。 用户在编写程序时就不能通过设备的绝对号来使用设备,用户只需向系统说明 所要使用的设备类型,如是打印机,还是显示器。为此,操作系统为每类设备规 定了一个编号,称为设备的类型号。如在UNIX 系统中,类型号被称为主设备号。 该系统中所有块设备的设备名由两部分构成:主设备号和次设备号,前者表示 设备类型,后者表示同类设备中的相对序号。如hda 、hdb 分别表示第一个和第 二个物理硬盘。 用户程序往往会同时使用几台同类设备,并且每台设备都可能多次使用。这样, 用户程序必须向操作系统说明当时它要用的设备是哪类设备的第几台。第几台 是设备的相对号,是用户自己规定的所用同类设备中的第几台。应与系统为每 台设备规定的绝对号相区别。 用户程序中提出使用设备的申请时,使用系统规定的设备类型号以及用户自己 规定的设备相对号,由操作系统进行地址转换,变成系统中的设备绝对号。 在操作系统中,SPOOLing 技术是一种并行机制,它可以使( )。 A. 不同进程同时运行B. 应用程序和系统软件同时运行 C. 不同的系统软件同时运行D. 程序的执行与打印同时进行 331