跳转至

第五章输入输出(I_O)管理

(一)I/O 管理基础

设备(设备的基本概念,设备的分类,I/O 接口,I/O 端口)

  1. 【2009-32】程序员利用系统调用打开I/O设备时,通常使用的设备标识是( )。

A. 逻辑设备

B. 物理设备

C. 主设备号

D. 从设备号

解析

答案:A。逻辑设备。

用户程序通过系统调用请求设备时,应使用与具体硬件无关的逻辑设备名。操作系统再通过设备独立软件,把逻辑设备映射到实际的物理设备。

物理设备、主设备号和从设备号是内核或驱动程序识别具体硬件时使用的信息,不应直接暴露给普通应用程序。使用逻辑设备名是实现设备独立性的基础。

  1. 【2023-32】下列因素中,设备分配需要考虑的是( )。

Ⅰ. 设备的类型

Ⅱ. 设备的访问权限

Ⅲ. 设备的占用状态

Ⅳ. 逻辑设备与物理设备的映射关系

A. Ⅰ、Ⅱ

B. Ⅱ、Ⅲ

C. Ⅲ、Ⅳ

D. Ⅰ、Ⅱ、Ⅲ、Ⅳ

解析

答案:D。I、II、III、IV。

设备分配时需要同时考虑:

  • 设备类型:独占、共享或虚拟设备的分配规则不同;
  • 访问权限:进程必须有使用该设备的权限;
  • 占用状态:已被独占的设备不能直接再次分配;
  • 逻辑设备与物理设备的映射:根据逻辑请求找到可用的实际设备。

四项都属于设备分配需要处理的信息,因此选 D。

I/O 控制方式(轮询方式,中断方式,DMA方式)

  1. 【2010-32】本地用户通过键盘登录系统时,首先获得键盘输入信息的程序是( )。

A. 命令解释程序

B. 中断处理程序

C. 系统调用服务程序

D. 用户登录程序

解析

答案:B。中断处理程序。

键盘产生按键数据后,键盘控制器向 CPU 发出中断请求。CPU 响应中断后,首先执行相应的键盘中断处理程序,由它从控制器数据寄存器取走输入数据,并交给内核缓冲区或后续处理模块。

命令解释程序和用户登录程序是在内核已获得输入数据后才会使用这些数据;系统调用服务程序不是键盘硬件中断的首个处理者。

  1. 【2017-32】系统将数据从磁盘读到内存的过程包括以下操作:

① DMA控制器发出中断请求

② 初始化DMA控制器并启动磁盘

③ 从磁盘传输一块数据到内存缓冲区

④ 执行“DMA结束”中断服务程序

正确的执行顺序是( )。

A. ③→①→②→④

B. ②→③→①→④

C. ②→①→③→④

D. ①→②→④→③

解析

答案:B。②→③→①→④。

正确流程为:

  1. CPU 或驱动程序初始化 DMA 控制器,设置内存缓冲区地址、传送长度和方向,并启动磁盘;
  2. 磁盘控制器与 DMA 控制器配合,将一块数据直接传送到内存缓冲区;
  3. DMA 传送完成后,DMA 控制器向 CPU 发出中断请求;
  4. CPU 执行“DMA 结束”中断服务程序,更新状态并唤醒等待进程。

因此顺序是 ②→③→①→④。

  1. 【2024-31】键盘中断服务例程执行结束时,所输入的数据存放位置是

A. 用户缓冲区

B. CPU 中的通用寄存器

C. 内核缓冲区

D. 键盘控制器的数据寄存器

解析

答案:C。内核缓冲区。

键盘控制器的数据寄存器中保存的是刚产生的硬件输入。中断服务程序会尽快把数据从控制器寄存器读走,存入内核维护的输入缓冲区,随后才由终端驱动、行规程或用户进程读取。

所以中断例程结束后,输入数据应已位于内核缓冲区,而不是仍留在控制器寄存器、通用寄存器或直接进入用户缓冲区。

I/O 软件层次结构

  1. 【2011-26】用户程序发出磁盘I/O请求后,系统的正确处理流程是( )。

A. 用户程序→系统调用处理程序→中断处理程序→设备驱动程序

B. 用户程序→系统调用处理程序→设备驱动程序→中断处理程序

C. 用户程序→设备驱动程序→系统调用处理程序→中断处理程序

D. 用户程序→设备驱动程序→中断处理程序→系统调用处理程序

解析

答案:B。用户程序→系统调用处理程序→设备驱动程序→中断处理程序。

用户程序通过 read、write 等系统调用进入内核;系统调用处理程序完成参数检查、文件或设备查找、请求组织等设备无关工作;随后设备驱动程序针对具体硬件设置控制器并启动 I/O;I/O 完成后,设备产生中断,由中断处理程序收尾并唤醒进程。

因此正确顺序为 B。

  1. 【2012-26】用户程序发出磁盘I/O请求后,系统的正确处理流程是操作系统的I/O子系统通常由四个层次组成,每一层明确定义了与邻近层次的接口。其合理的层次组织排列顺序是( )。

A. 用户级I/O软件、设备无关软件、设备驱动程序、中断处理程序

B. 用户级I/O软件、设备无关软件、中断处理程序、设备驱动程序

C. 用户级I/O软件、设备驱动程序、设备无关软件、中断处理程序

D. 用户级I/O软件、中断处理程序、设备无关软件、设备驱动程序

解析

答案:A。用户级 I/O 软件、设备无关软件、设备驱动程序、中断处理程序。

从上到下的典型 I/O 软件层次为:

  1. 用户级 I/O 软件,例如库函数和假脱机程序;
  2. 设备无关软件,负责命名、保护、缓冲、分配和逻辑到物理映射;
  3. 设备驱动程序,处理具体控制器命令;
  4. 中断处理程序,响应硬件完成或错误中断。

驱动程序必须位于设备无关软件之下;中断处理程序最接近硬件,故选 A。

  1. 【2013-25】用户程序发出磁盘 I/O 请求后,系统的处理流程是:用户程序→系统调用处理程序→设备驱动程序→中断处理程序。其中,计算数据所在磁盘的柱面号、磁头号、扇区号的程序是( )。

A. 用户程序

B. 系统调用处理程序

C. 设备驱动程序

D. 中断处理程序

解析

答案:C。设备驱动程序。

上层通常以文件逻辑块号或设备逻辑块号提出 I/O 请求。设备驱动程序了解具体设备的几何参数和命令格式,负责把逻辑块号转换为柱面号、磁头号、扇区号等物理地址信息,并向控制器发出命令。

因此 CHS 地址转换属于设备驱动程序的职责。

  1. 【2022-32】下列关于驱动程序的叙述中,不正确的是( )。

A. 驱动程序与I/O控制方式无关

B. 初始化设备是由驱动程序控制完成的

C. 进程在执行驱动程序时可能进入阻塞态

D. 读/写设备的操作是由驱动程序控制完成的

解析

答案:A。驱动程序与 I/O 控制方式无关。

驱动程序需要依据控制方式组织 I/O。例如轮询方式需要不断检查状态寄存器;中断方式需要设置中断并配合中断处理;DMA 方式需要配置 DMA 地址、计数和传送方向。因此驱动程序与 I/O 控制方式有关,A 错误。

初始化设备和控制设备读写操作均是驱动程序的重要职责。进程调用驱动程序发起 I/O 后,也可能等待设备完成而阻塞,所以 B、C、D 正确。

输入/输出应用程序接口

(二)设备独立软件

  1. 【2020-30】对于具备设备独立性的系统,下列叙述中,错误的是( )。

A. 可以使用文件名访问物理设备

B. 用户程序使用逻辑设备名访问物理设备

C. 需要建立逻辑设备与物理设备之间的映射关系

D. 更换物理设备后必须修改访问该设备的应用程序

解析

答案:D。更换物理设备后必须修改访问该设备的应用程序。

设备独立性的目标正是让应用程序使用逻辑设备名或文件名访问设备,由操作系统维护逻辑设备到物理设备的映射。当更换实际设备时,只需修改映射或驱动配置,应用程序通常不需要改变。

所以 D 与设备独立性的目的相反,是错误叙述。

缓冲区管理

  1. 【2011-31】某文件占10个磁盘块,现要把该文件磁盘块逐个读入主存缓冲区,并送用户区进行分析,假设一个缓冲区与一个磁盘块大小相同,把一个磁盘块读入缓冲区的时间为100μs,将缓冲区的数据传送到用户区的时间是50μs,CPU对一块数据进行分析的时间为50μs。在单缓冲区和双缓冲区结构下,读入并分析完该文件的时间分别是( )。

A. 1500μs、1000μs

B. 1550μs、1100μs

C. 1550μs、1550μs

D. 2000μs、2000μs

解析
答案:B

题图

  1. 【2013-27】设系统缓冲区和用户工作区均采用单缓冲,从外设读入 1 个数据块到系统缓冲区的时间为 100,从系统缓冲区读入 1 个数据块到用户工作区的时间为 5,对用户工作区中的 1 个数据块进行分析的时间为 90(如下图所示)。

1783968213950-344a93ad-053e-44d6-bacb-0033685fa9b4.png

进程从外设读入并分析 2 个数据块的最短时间是( )。

A. 200

B. 295

C. 300

D. 390

解析

设:

  • 外设读入系统缓冲区的时间为 T=100;
  • 系统缓冲区传送到用户工作区的时间为 M=5;
  • CPU 分析一个数据块的时间为 C=90。

为了使总时间最短,应让磁盘读入与 CPU 分析尽量并行:

  1. 0~100:外设将第1块读入系统缓冲区。
  2. 100~105:第1块从系统缓冲区传送到用户工作区。
  3. 105~195:CPU分析第1块;与此同时,外设从105~205读入第2块。
  4. 195~210:CPU暂时等待。其中205~210将第2块传送到用户工作区。
  5. 210~300:CPU分析第2块。

因此:总时间 = T₁ + M₁ + max(T₂,C₁) + M₂ + C₂= 100 + 5 + max(100,90) + 5 + 90 = 300

也可以使用单缓冲连续处理 n 个数据块的公式:

(n-1)[max(C,T)+M] + T+M+C

代入 n=2,结果仍为 300。

故选择 C。

题图

  1. 【2015-28】在系统内存中设置磁盘缓冲区的主要目的是( )。

A. 减少磁盘I/O次数

B. 减少平均寻道时间

C. 提高磁盘数据可靠性

D. 实现设备无关性

解析

答案:A。减少磁盘 I/O 次数。

内存中的磁盘缓冲区或页缓存可以保留最近访问的数据。后续读请求若命中缓存,就不必再次访问磁盘;写请求也可以先写入缓存并延迟、合并写回。因此其主要作用是减少实际磁盘 I/O 次数。

缓冲区不能直接缩短机械磁盘的平均寻道时间,也不是可靠性或设备独立性的主要实现机制。

设备分配与回收

假脱机技术(SPOOLing)

  1. 【2016-31】下列关于SPOOLing技术的叙述中,错误的是( )。

A. 需要外存的支持

B. 需要多道程序设计技术的支持

C. 可以让多个作业共享一台独占设备

D. 由用户作业控制设备与输入/输出井之间的数据传送

解析

答案:D。由用户作业控制设备与输入/输出井之间的数据传送。

SPOOLing 使用外存上的输入井、输出井模拟独占设备的排队使用,需要外存和多道程序技术支持。系统中的输入进程、输出进程或假脱机服务程序负责设备与输入/输出井之间的数据传送,而不是由普通用户作业直接控制。

因此 A、B、C 正确,D 错误。

设备驱动程序接口

(三)外存管理

磁盘(磁盘结构,格式化,分区,磁盘调度方法)

  1. 【2009-29】假设磁头当前位于第105道,正在向磁道序号增加的方向移动。现有一个磁道访问请求序列为35, 45, 12, 68, 110, 180, 170, 195,采用 SCAN 调度(电梯调度)算法得到的磁道访问序列是( )。

A. 110, 170, 180, 195, 68, 45, 35, 12

B. 110, 68, 45, 35, 12, 170, 180, 195

C. 110, 170, 180, 195, 12, 35, 45, 68

D. 12, 35, 45, 68, 110, 170, 180, 195

解析

答案: A。

题图

磁头当前位于 105 号磁道,并且正在向磁道号增大的方向移动。请求序列为:

35,45,12,68,110,180,170,195

第一步:按磁道位置排序

小于105的请求:12,35,45,68

大于105的请求:110,170,180,195

第二步:沿当前方向处理

SCAN算法不会立即选择所有请求中距离最近的磁道,而是先沿当前移动方向依次处理遇到的请求。

磁头当前向磁道号增大的方向移动,所以先访问:110 → 170 → 180 → 195

第三步:到达该方向的末端后换向

换向后,按磁道号递减的顺序访问剩余请求:68 → 45 → 35 → 12

因此完整的磁道访问顺序为:110 → 170 → 180 → 195 → 68 → 45 → 35 → 12

若严格按照SCAN算法先移动到磁盘端点再折返,磁头可能在195之后继续移动到端点,但端点处没有请求,因此不影响本题所问的请求访问顺序。

  1. 【2012-32】下列选项中,不能改善磁盘设备I/O性能的是( )。

A. 重排I/O请求次序

B. 在一个磁盘上设置多个分区

C. 预读和滞后写

D. 优化文件物理块的分布

解析

答案:B。在一个磁盘上设置多个分区。

设置多个分区的主要目的在于逻辑隔离、安装多个文件系统或管理方便,不能直接减少寻道、旋转延迟或传输次数。

重排 I/O 请求次序可减少寻道;预读与滞后写可减少等待或合并 I/O;优化文件物理块分布可以提高连续访问效率。因此不能改善性能的是 B。

  1. 【2015-32】某硬盘有200个磁道(最外侧磁道号为0),磁道访问请求序列为:130,42,180,15,199,当前磁头位于第58号磁道并从外侧向内侧移动。按照SCAN调度方法处理完上述请求后,磁头移过的磁道数是( )。

A. 208

B. 287

C. 325

D. 382

解析

答案选 C,325。

磁道编号为 0~199,由外向内移动就是向磁道号增大的方向移动。

先处理当前方向上的请求:58 → 130 → 180 → 199

到达199后换向,处理剩余请求:199 → 42 → 15

所以磁头移动的磁道总数为:141+184=325

题图

  1. 【2017-29】下列选项中,磁盘逻辑格式化程序所做的工作是( )。

Ⅰ. 对磁盘进行分区

Ⅱ. 建立文件系统的根目录

Ⅲ. 确定磁盘扇区校验码所占位数

Ⅳ. 对保存空闲磁盘块信息的数据结构进行初始化

A. 仅Ⅱ

B. 仅Ⅱ、Ⅳ

C. 仅Ⅲ、Ⅳ

D. 仅Ⅰ、Ⅱ、Ⅳ

解析

答案:B。仅 II、IV。

逻辑格式化是在已完成分区和低级格式化的磁盘分区上创建文件系统,典型工作包括:

  • 建立根目录;
  • 初始化文件系统管理结构,例如空闲磁盘块位图、空闲表或其他空闲空间管理数据结构。

对磁盘分区属于分区操作;确定扇区校验码位数属于低级格式化或物理格式化的内容。因此只有 II、IV 正确。

  1. 【2017-26】某文件系统的簇和磁盘扇区大小分别为1KB和512B。若一个文件的大小为1026B,则系统分配给该文件的磁盘空间大小是( )。

A. 1026B

B. 1536B

C. 1538B

D. 2048B

解析

答案:D。2048B。

簇大小为 1KB,即 1024B。文件大小为 1026B,需要的簇数为:

ceil(1026 / 1024) = 2 簇。

每簇占 1KB,所以分配空间为:

2 × 1024B = 2048B。

扇区大小为 512B 只说明每个簇包含两个扇区,不改变以簇为分配单位这一事实。

  1. 【2018-30】系统总是访问磁盘的某个磁道而不响应对其他磁道的访问请求,这种现象称为磁臂黏着。下列磁盘调度算法中,不会导致磁臂粘着的是

A. 先来先服务 (FCFS)

B. 最短寻道时间优先 (SSTF)

C. 扫描算法 (SCAN)

D. 循环扫描算法 (CSCAN)

解析

答案:A。先来先服务(FCFS)。

磁臂黏着指调度器长期偏向某个位置附近的请求,使其他请求长期得不到响应。FCFS 严格按请求到达顺序服务,不会因为某个磁道离当前磁头近而反复优先服务该磁道;已进入队列的请求只需等待有限个更早到达的请求。

因此,FCFS 不会因基于磁头位置的偏好产生磁臂黏着,选 A。SSTF 尤其容易因不断优先处理近距离请求而使远距离请求等待很久。

  1. 【2021-26】某系统中磁盘的磁道数为200 (0~199),磁头当前在184号磁道上。用户进程提出的磁盘访问请求对应的磁道号依次为184、187、176、182、199。若采用最短寻道时间优先调度算法 (SSTF) 完成磁盘访问,则磁头移动的距离(磁道数)是( )。

A. 37

B. 38

C. 41

D. 42

解析

答案:C

最短寻道时间优先 (SSTF) 调度算法,总是访问距离当前磁道最近的磁道。根据题意,模拟过程如下:

题图

  1. 【2024-32】某磁盘的磁道数为 400(磁道号为 0~399),采用循环扫描算法 (CSCAN) 进行磁盘调度,完成对 200 号磁道的请求后,磁头向磁道号减小的方向移动,若还有 7 个请求,对应的磁道号分别为 300, 120, 110, 0, 160, 210, 399,则完成上述磁盘请求后磁头移动的距离是

A. 599

B. 619

C. 788

D. 799

解析

答案:C

CSCAN只沿一个方向扫描。到达磁盘一端后,磁头直接回到另一端,再沿原方向继续扫描,而不是反向处理请求。

1. 第一次递减扫描

先处理小于200的请求,按磁道号递减访问:200 → 160 → 120 → 110 → 0,这一段的移动距离为:200-0=200

2. 循环回卷

到达0号磁道后,磁头直接移动到399号磁道:399-0=399,399号磁道本身存在请求,因此到达后立即处理。

3. 第二次递减扫描

从399继续按磁道号减小方向访问:399 → 300 → 210,移动距离为:399-210=189

因此完整访问顺序为:

160 → 120 → 110 → 0 → 399 → 300 → 210

磁头移动总距离为:200+399+189=788

故选择 C。

题图

固态硬盘(读写性能特性,磨损均衡)