## 31. 在用户程序中如何给出 I/O 操作请求呢?
答:对于用户程序,所有高级语言的运行时系统都提供了执行 I/O 功能的高级机制。例如,C 语言中提供了如 printf() 和 scanf() 等标准 I/O 库函数,C++ 语言中提供了如 <<(输入)和 >>(输出)重载 I/O 操作符。从用户在高级语言程序中通过 I/O 函数或 I/O 操作符提出 I/O 请求,到 I/O 设备响应并完成 I/O 请求,整个过程涉及多个层次的 I/O 软件和 I/O 硬件的协调工作。
因为现代计算机 I/O 系统的复杂性都隐藏在操作系统中,因此,用户程序需要从某个设备输入信息或将结果送到外设时,只要通过系统调用(以低级语言方式提供)或库函数调用(以高级语言方式提供),将 I/O 请求提交给操作系统即可,无须了解外部设备的具体工作细节。
## 32. 从用户程序提出 I/O 请求到外设完成 I/O 操作的大致过程是怎样的?
答:用户程序总是通过某种 I/O 函数或 I/O 操作符请求 I/O 操作。例如,用户程序需要读一个磁盘文件中的记录时,它可以通过调用 C 语言标准 I/O 库函数 fread(),也可以直接调用 read 系统调用的封装函数 read()来提出 I/O 请求。不管用户程序中调用的是 C 库函数还是系统调用封装函数,最终都是通过操作系统内核提供的系统调用来实现 I/O 操作。
每个系统调用的封装函数会被转换为一组与具体机器架构相关的指令序列,这个指令序列中,至少有一条陷阱指令,在陷阱指令之前可能还有若干传送指令用于将 I/O 操作的参数送入相应的寄存器。
例如,在 IA-32 中,陷阱指令就是 INT n 指令,也称为软中断指令。在早期 IA-32 架构中,Linux 系统将 int $0x80 指令用作系统调用,在系统调用指令之前会有一串传送指令,用来将系统调用号等参数传送到相应的寄存器。系统调用号通常在 EAX 寄存器中,可根据系统调用号选择执行一个系统调用服务例程。用户进程的 I/O 请求通过调出操作系统中相应的系统调用服务例程来实现。
I/O 子系统工作的大致过程是:首先,CPU 在用户态执行用户进程,当 CPU 执行到系统调用的封装函数对应的指令序列中的陷阱指令时,会从用户态陷入内核态;转到内核态执行后,CPU 根据陷阱指令执行时 EAX 寄存器中的系统调用号,选择执行一个相应的系统调用服务例程;在系统调用服务例程的执行过程中,可能需要调用具体设备的驱动程序;在设备驱动程序执行过程中启动外设工作,外设准备好后发出中断请求,CPU 响应中断后,就调出中断服务程序执行,在中断服务程序中控制主机与设备进行具体的数据交换。
<!-- page: 258 -->
# 8.5 单项选择题
1. 假定有一个事务处理系统 A,其处理器的速度为每秒执行 5000 万条指令,每个事务需要 5 次 I/O 操作,每次 I/O 操作需要 10 000 条指令。如果系统 A 每秒最多发出 1000 次 I/O 操作,则它每秒处理的事务数最多能达到( )个。(忽略延迟并假定事务可以不受限制地并行处理)
A. 200
B. 1000
C. 2000
D. 10000
2. 以下各类外设中,属于成块传送设备的是( )。
A. 键盘
B. 鼠标器
C. 针式打印机
D. U 盘
3. 以下各类外设中,属于存储设备的是( )。
A. 键盘
B. 鼠标
C. 显示器
D. 磁盘存储器
4. 以下各类外设中,属于字符型设备的是( )。
A. 针式打印机
B. 硬盘存储器
C. 软驱
D. 光驱
5. 以下是有关非编码键盘和鼠标器的描述:
① 键盘和鼠标都是字符型输入设备。
② 键盘和鼠标都以串行方式和主机通信。
③ 键盘和鼠标都采用中断方式进行数据传送。
④ 键盘和鼠标向主机传送的都是位置信息。
以上描述中,正确的是( )。
A. 仅①和②
B. 仅①、②和③
C. 仅①、③和④
D. 全部
6. 在采用中断方式进行打印控制时,在打印控制接口和打印部件之间交换的信息不包括以下的( )。
A. 打印字符点阵信息
B. 打印控制信息
C. 打印机状态信息
D. 中断请求信号
7. 以下是有关激光打印机中打印控制器功能的叙述,其中错误的是( )。
A. 接收主机送来的打印字符点阵信息
B. 缓存主机送来的各种打印描述信息
C. 对打印语言中描述的各种命令进行解释
D. 对打印内容按页面设置参数进行光栅化
8. 假定一台计算机的显示存储器用 DRAM 芯片实现,若要求显示分辨率为 $1600 \times 1200$,颜色深度为 24 位,帧频为 $85\mathrm{Hz}$,显存总带宽的 $50\%$ 用来刷新屏幕,则需要的显存总带宽至少约为( )。
A. $245 \mathrm{Mb} / \mathrm{s}$
B. $979 \mathrm{Mb} / \mathrm{s}$
C. $1958 \mathrm{Mb} / \mathrm{s}$
D. $7834 \mathrm{Mb} / \mathrm{s}$
9. 假定计算机系统中连接主存和磁盘的总线带宽是 $68.8\mathrm{MB / s}$,磁盘的最大数据传输率是 $5\mathrm{MB / s}$。如果允许磁盘输入/输出占用 $100\%$ 的总线和主存带宽,那么总线上可同时接入的磁盘个数最多是( )。
A. 13
B. 14
C. 15
D. 16
10. 系统总线中控制线的主要功能是( )。
<!-- page: 259 -->
A. 提供定时信号、操作命令和各种请求/回答信号等
B. 提供数据信息
C. 提供时序信号
D. 提供主存和 I/O 模块的回答信号
11. 假定一个同步总线的工作频率为 $33\mathrm{MHz}$,总线中有 32 位数据线,每个总线时钟传输一次数据,则该总线的最大数据传输率(总线带宽)为( )。
A. $66\mathrm{MB / s}$
B. $132\mathrm{MB / s}$
C. $528\mathrm{MB / s}$
D. $1056\mathrm{MB / s}$
12. 下列有关同步总线事务的描述中,错误的是( )。
A. 一个总线事务所用时间由多个总线时钟周期组成
B. 总线事务开始时通常先把地址和读/写命令送到总线上
C. “存储器读”总线事务中数据和地址通常不会同时送到总线上
D. 一次总线事务只能完成一个数据交换,其位数不超过总线宽度
13. 下列有关同步总线的描述中,错误的是( )。
A. 用一个公共时钟信号进行同步
B. 不需要应答(握手)信号
C. 要求挂接在总线上的各部件的存取时间较为接近
D. 总线长度不受限制,可以很长
14. 增加同步总线带宽的手段有很多,但以下( )不能提高总线带宽。
A. 采用信号线复用技术
B. 增加总线宽度
C. 采用突发(burst)传送方式
D. 提高总线时钟频率
15. 下列有关存储器总线的叙述中,错误的是( )。
A. 采用并行传输方式同时传输多位数据
B. 总线中有地址、数据和控制三组传输线
C. 一定有时钟信号线用于总线操作的定时
D. 每个时钟周期内只能并行传输一次数据
16. 下列关于异步总线的叙述中,错误的是( )。
A. 需要应答(握手)信号
B. 需用一个公共的时钟信号进行同步
C. 可以实现高可靠的数据传输
D. 挂接在总线上的各部件可以有较大的速度差异
17. 以下有关总线标准的叙述中,错误的是( )。
A. 引入总线标准便于设备互换和新设备的添加
B. 主板上的处理器总线和存储器总线通常是专用总线
C. I/O 总线通常是标准总线,所以 PCI 总线是标准总线
D. 串行传输的数据传输率一定比并行传输的数据传输率低
18. 下列选项中的英文缩写均为总线标准的是( )。
A. PCI, CRT, USB, EISA
B. ISA, CPI, VESA, EISA
<!-- page: 260 -->
C. ISA、SCSI、RAM、MIPS
D. ISA、EISA、PCI、PCI-e
19. 以下有关多总线结构系统的叙述中,错误的是( )。
A. 通常越靠近 CPU 的总线传输速率越高
B. 通常在总线和总线之间用桥接器连接
C. 处理器总线和存储器总线都比 I/O 总线快
D. 系统中的多个总线不可能同时传输信息
20. 主机和外设之间的正确连接通路是( )。
A. CPU 和主存—I/O 总线—I/O 接口(外设控制器)—通信总线(电缆)—外设
B. CPU 和主存—I/O 接口(外设控制器)—I/O 总线—通信总线(电缆)—外设
C. CPU 和主存—I/O 总线—通信总线(电缆)—I/O 接口(外设控制器)—外设
D. CPU 和主存—I/O 接口(外设控制器)—通信总线(电缆)—I/O 总线—外设
21. 以下有关 I/O 接口功能和结构的叙述中,错误的是( )。
A. I/O 接口就是像显卡或网卡之类的一种外设控制逻辑
B. CPU 可以向 I/O 接口传送用来对设备进行控制的命令
C. CPU 可以从 I/O 接口取状态信息,以了解接口和外设的状态
D. I/O 接口中主机侧数据宽度与设备侧数据宽度总是一样
22. 以下有关 I/O 端口的叙述中,错误的是( )。
A. I/O 接口中程序可访问的寄存器被称为 I/O 端口
B. I/O 接口中有命令端口、状态端口和数据端口
C. I/O 端口可以和主存统一编号,也可以单独编号
D. I/O 接口中命令端口和状态端口不能共用同一个
23. 以下给出的部件中,不包含在外设控制接口电路中的是( )。
A. 标志寄存器
B. 数据缓存器
C. 命令(控制)寄存器
D. 状态寄存器
24. 以下有关统一编址方式的描述中,错误的是( )。
A. I/O 端口地址和主存地址一定不重号
B. CPU 通过执行访存指令来访问 I/O 端口
C. 根据指令类型可区分访问主存还是访问 I/O 端口
D. 可利用主存的存储保护措施对 I/O 端口进行存储保护
25. 以下给出的通信总线(连接外设控制器和外设)中,可以采用并行传输方式的是( )。
A. USB
B. RS-232
C. SCSI
D. IEEE 1394(火线)
26. 以下 I/O 控制方式中,主要由硬件而不是软件实现数据传送的方式是( )。
A. 程序查询方式
B. 中断方式
C. DMA 方式
D. 无条件程序控制方式
27. 以下是有关程序直接控制(查询)I/O 方式的叙述:
① 无条件传送接口中不记录状态,无须状态查询,可直接定时访问
② 条件传送接口中有“就绪”和“完成”等状态,可定时查询或独占查询
③ 通过 CPU 执行相应的无条件传送程序或查询程序来完成数据传送
<!-- page: 261 -->
④ 适合于巡回检测采样系统或过程控制系统,以及非随机启动的字符型设备以上叙述中,正确的有( )。
A. 仅①和②
B. 仅①、②和③
C. 仅①、③和④
D. 全部
28. 下列选项中,能引起外部中断的事件是( )。
A. 鼠标输入
B. 除数为 0
C. 浮点运算下溢
D. 访存缺页
29. 下列选项中,不属于外部中断的事件是( )。
A. 采样定时到
B. 无效操作码
C. 打印机缺纸
D. 键盘缓冲满
30. 下列选项中,能引起外部中断请求的事件是( )。
A. 一条指令执行结束
B. 一次总线传输结束
C. 一次中断处理结束
D. 一次 DMA 操作结束
31. 以下( )情况出现时,会引起 CPU 自动查询有无中断请求,进而可能进入中断响应周期。
A. 一条指令执行结束
B. 一次 I/O 操作结束
C. 一次中断处理结束
D. 一次 DMA 操作结束
32. 以下有关 CPU 响应外部中断请求的叙述中,错误的是( )。
A. 每条指令结束后,CPU 都会转到“中断响应”周期进行中断响应处理
B. 在“中断响应”周期,CPU 将中断允许触发器清 0,以使 CPU 关中断
C. 在“中断响应”周期,CPU 把后继指令地址作为返回地址保存在固定地方
D. 在“中断响应”周期,CPU 把取得的中断服务程序的入口地址送 PC
33. 单级中断系统中,中断服务程序内的执行顺序是( )。
I. 保护现场
II. 开中断
III. 关中断
IV. 保存断点
V. 中断事件处理
VI. 恢复现场
VII. 中断返回
A. I → V → VI → II → VII
B. III → I → V → VII
C. III → IV → V → VI → VII
D. IV → I → V → VI → VII
34. 中断向量地址是指( )。
A. 子程序入口地址
B. 中断服务程序入口地址
C. 中断服务程序入口地址的地址
D. 中断查询程序的入口地址
35. 以下操作中,不是通过执行指令而是由硬件完成的是( )。
A. 保护断点
B. 保护现场
C. 设置中断屏蔽字
D. 从 I/O 接口取数
36. 设置中断屏蔽字可以动态地改变( )优先级。
A. 中断查询
B. 中断响应
C. 中断处理
D. 中断返回
37. 开中断和关中断两种操作都用于对( )进行设置。
A. 中断允许触发器
B. 中断屏蔽寄存器
C. 中断请求寄存器
D. 中断向量寄存器
<!-- page: 262 -->
38. 以下有关中断 I/O 方式的叙述中,错误的是( )。
A. 中断请求的是 CPU 时间,要求 CPU 执行程序来处理发生的相关事件
B. CPU 对外部中断的响应不可能发生在一条指令的执行过程中
C. 中断 I/O 方式下,外设接口中的数据和 CPU 中的寄存器内容直接交换
D. 只要有中断请求发生,那么一条指令执行结束后 CPU 就进入中断响应周期
39. 假设计算机系统中软盘以中断方式与 CPU 进行数据交换,主频为 $50\mathrm{MHz}$,传输单位为 16 位,软盘的数据传输率为 $50\mathrm{kB/s}$。若每次数据传输的开销(包括中断响应和中断处理)为 100 个时钟周期,则软盘工作时 CPU 用于软盘数据传输的时间占整个 CPU 时间的百分比是( )。
A. $0\%$
B. $5\%$
C. $1.5\%$
D. $15\%$
40. 周期挪用方式常用于( )方式的输入/输出控制中。
A. DMA
B. 中断
C. 程序查询
D. 通道
41. 采用周期挪用方式进行数据传送时,每传送一个数据要占用一个( )的时间。
A. 指令周期
B. 机器周期
C. 时钟周期
D. 存储周期
42. DMA 方式的数据交换不是由 CPU 执行一段程序来完成,而是在( )之间建立一条逻辑上的直接数据通路,由 DMA 控制器来实现的。
A. CPU 与主存之间
B. 外设与主存之间
C. 外设与 CPU 之间
D. 外设与外设之间
43. CPU 启动一次 DMA 传送,外设和主机之间将完成一个( )的数据传送。
A. 字节
B. 字
C. 总线宽度
D. 数据块
44. 以下是有关对 DMA 方式的叙述:
① DMA 控制器向 CPU 请求的是总线使用权
② DMA 方式可用于键盘和鼠标器的数据输入
③ DMA 方式下整个 I/O 过程完全不需要 CPU 介入
④ DMA 方式需要用中断处理进行辅助操作
以上叙述中,错误的是( )。
A. 仅①和②
B. 仅②和③
C. 仅②和④
D. 仅③和④
45. 以下关于 DMA 控制器和 CPU 关系的叙述中,错误的是( )。
A. DMA 控制器和 CPU 都可以作为总线的主控设备
B. DMA 控制器和 CPU 都要使用总线时,CPU 优先级更高
C. CPU 可通过执行 I/O 指令来访问 DMA 控制器中的 I/O 端口
D. CPU 可通过执行 I/O 指令来启动进行 DMA 传送的设备
46. 以下关于 I/O 子系统的描述中,错误的是( )。
A. I/O 子系统包含 I/O 软件和 I/O 硬件两大部分
B. I/O 软件包含用户空间 I/O 软件部分和内核空间 I/O 软件部分
C. 内核空间 I/O 软件包含设备无关软件、设备驱动程序和中断服务程序
D. 直接控制 I/O 硬件的是设备驱动程序,而不是中断服务程序
<!-- page: 263 -->
## 【参考答案】
1. A
2. D
3. D
4. A
5. D
6. D
7. A
8. D
9. A
10. A
11. B
12. D
13. D
14. A
15. D
16. B
17. D
18. D
19. D
20. A
21. D
22. D
23. A
24. C
25. C
26. C
27. D
28. A
29. B
30. D
31. A
32. A
33. A
34. C
35. A
36. C
37. A
38. D
39. B
40. A
41. D
42. B
43. D
44. B
45. B
46. D
## 【部分题目的答案解析】
### 第1题
从系统 A 的能力来看,它每秒能够处理的事务数为 $50\,000\,000 / (10\,000 \times 5) = 1000$。但是,因为系统 A 每秒最多发出 1000 次 I/O 操作,因而每秒所包含的事务数最多仅有 $1000 / 5 = 200$ 个。因此,答案为选项 A。
### 第6题
采用中断方式进行打印控制时,通常将打印机作为字符型设备(如针式打印机)使用。对于这类打印机的控制过程通常是,CPU 先将需打印的字符编码送到打印控制接口(又称打印适配器或打印控制器)中,打印控制接口再将字符编码转换为点阵信息,然后通过打印电缆传送到打印机,以控制打印针头在何处进行打印。同时,打印控制接口需要将“初始化”“选通”“自动走纸”等打印控制信息通过电缆传送到打印机,并通过电缆把打印机的“联机”“忙”“缺纸”等状态信号取到打印控制接口,以供 CPU 来读取。因此,选项 A、B 和 C 的说法都是正确的。
中断请求信号是打印控制接口通过中断控制器(PIC)发送给 CPU 的,所以,不在打印控制接口和打印机之间进行交换,因而选项 D 的说法是错误的。答案为选项 D。
### 第7题
激光打印机是一种非击打式印字机,其打印机控制器由功能较强的处理器、缓冲存储器以及相应的辅助电路构成,它的功能包括:缓存并解释主机送来的打印语言描述命令(包括打印机控制命令、页面格式命令、字体处理命令、图形命令等),格式化打印内容(包括纸张尺寸、边界设定、字符的大小与位置等),并进行光栅化处理(把经过格式化的页面数据转换成点阵数据),等等。由此可见,主机送到打印控制器中的是页面描述信息和各种命令,打印点阵信息是由打印控制器通过对页面数据经过光栅化而得到的,因此,打印点阵信息不可能是主机送到打印控制器的。因此,选项 A 的说法是错误的,而选项 B、C、D 的说法是正确的。答案为选项 A。
### 第8题
为了达到屏幕刷新所需的要求,带宽必须达到 $1600 \times 1200 \times 24 \times 85\,\mathrm{b/s} = 3916.8\,\mathrm{Mb/s}$。因为这个仅占显存带宽的 $50\%$,所以显存总带宽至少为 $2 \times 3916.8\,\mathrm{Mb/s} = 7834\,\mathrm{Mb/s}$。因此,选项 D 正确。答案为选项 D。
### 第10题
系统总线中控制线的主要功能是提供定时信号、操作命令和各种请求/回答信号等,因此,正确答案就是选项 A。对于选项 C 和 D 的说法,显然,都没有选项 A 的描述全面。此外,数据信息应通过专门的数据线进行交换,因此,选项 B 的说法是错误的。
<!-- page: 264 -->
第 12 题
同步总线事务可以是突发传输方式,这种情况下,一个总线事务中可以传输多个连续的数据,每次传输的数据位数不超过总线宽度。显然,选项 D 的说法是错误的,答案为选项 D。
第 14 题
信号线复用技术是指同一组信号线在不同的时刻传输不同的信息。例如,地址线和数据线复用,表示总线事务开始时这组信号线用来传输地址,在数据传输阶段这组信号线又用来传输数据。如果是存储器写总线事务,若不采用地址线和数据线复用,则开始时 CPU 可以将地址和数据同时发送到总线上;而若采用地址线和数据线复用,则不能将地址和数据同时发送,必须先发送地址,再发送数据。显然,这样会延长该总线事务的时间,也就不能提高总线带宽。因此,答案为选项 A。
第 15 题
目前内存条大都采用 DDR、DDR2、DDR3 等 SDRAM 芯片技术,与这种内存条相连的存储器总线,每个时钟周期总是在上升沿和下降沿各传送一次数据,因此,一个时钟周期内可以并行传输两次数据。显然,选项 D 的描述是错误的,答案为选项 D。
第 17 题
因为串行传输方式每次在一根信号线上传送数据位,传输速率可以比并行总线高得多,而且,因为每个位各自传输,因而传输时延的细微变化不会影响其他数据位的传送。通过多个数据通道的组合,可以实现比传统并行总线高得多的数据传输带宽。显然,选项 D 的说法是错误的。答案为选项 D。
第 21 题
I/O 接口中主机侧通过 I/O 总线与主机相连,设备侧通过通信总线(电缆)与外设相连,显然,I/O 总线中的数据线宽度和连接设备的电缆中的数据线宽度不一定相同。选项 D 的说法是错误的。答案为选项 D。
第 22 题
因为 CPU 对 I/O 接口中的命令端口总是写操作,对状态端口总是读操作,因此,命令端口和状态端口可以共用同一个,当然,也可以有独立的命令端口和独立的状态端口。选项 D 的说法是错误的。答案为选项 D。
第 24 题
统一编址方式中,I/O 端口地址和主存单元地址统一编址。它们各自分配在不同的地址范围内,因此,I/O 端口地址和主存单元地址一定不重号。选项 A 的说法正确。
统一编址方式中,CPU 通过访存指令来访问 I/O 端口,只要根据给出的地址是在主存地址范围内还是 I/O 地址范围内,就可区分访问的是主存单元还是 I/O 端口,而且可以把 I/O 端口的空间看成主存空间的一部分,利用存储保护措施对 I/O 端口进行存储保护。选项 B 和 D 的说法正确。
因为 CPU 使用统一的访存指令进行访问,因此,无法通过指令类型来区分访问的是内存单元还是 I/O 端口。选项 C 的说法不正确。答案是选项 C。
第 28 题
除数为 0、浮点运算下溢和访存时缺页都是在执行某条指令时 CPU 发现的异常事件,
<!-- page: 265 -->
不属于外部中断请求事件,只有鼠标输入是和任何指令的执行无关的、能引起外部中断的事件。答案为 A。