二、综合应用题

2026 旧版 · 非 2027 主源 · 原书检索 · 文字用于定位,公式与图表请回原页核验 · 本次导入快照

## 二、综合应用题

01. 输入/输出软件一般分为 4 个层次:用户层、与设备无关的软件层、设备驱动程序和中断处理程序。请说明以下各工作是在哪一层完成的:
1)为磁盘读操作计算磁道、扇区和磁头。
2)向设备寄存器写命令。
3)检查用户是否有权使用设备。
4)将二进制整数转换成 ASCII 码以便打印。

02. 在某系统中,若采用双缓冲区(每个缓冲区可存放一块数据),将一块数据从磁盘传送到缓冲区的时间为 $80\mu \mathrm{s}$,从缓冲区传送到用户的时间为 $20\mu \mathrm{s}$,CPU 计算一块数据的时间为 $50\mu \mathrm{s}$。总共处理 4 个数据块,每个数据块的平均处理时间是多少?

03. 【2023 统考真题】进程 P 通过执行系统调用从键盘接收一个字符的输入,已知此过程中与进程 P 相关的操作包括:①将进程 P 插入就绪队列;②将进程 P 插入阻塞队列;③将字符从键盘控制器读入系统缓冲区;④启动键盘中断处理程序;⑤进程 P 从系统调用返回;⑥用户在键盘上输入字符。以上编号①~⑥仅用于标记操作,与操作的先后顺序无关。请回答下列问题。


<!-- page: 345 -->

1)按照正确的操作顺序,操作①的前一个和后一个操作分别是上述操作中的哪一个?操作⑥的后一个操作是上述操作中的哪一个?
2)在上述哪个操作之后 CPU 一定从进程 P 切换到其他进程?在上述哪个操作之后 CPU 调度程序才能选中进程 P 执行?
3)完成上述哪个操作的代码属于键盘驱动程序?
4)键盘中断处理程序执行时,进程P处于什么状态?CPU是处于内核态还是处于用户态?

## 5.2.9 答案与解析

### 一、单项选择题

#### 01. C

设备的独立性主要是指用户使用设备的透明性,即使用户程序和实际使用的物理设备无关。

#### 02. C

CPU 与 I/O 设备执行速度通常是不对等的,前者快、后者慢,通过高速缓冲技术来改善两者不匹配的问题。

#### 03. A

缓冲池是系统的共用资源,可供多个进程共享,并且既能用于输入又能用于输出。其一般包含三种类型的缓冲:①空闲缓冲区;②装满输入数据的缓冲区;③装满输出数据的缓冲区。为了管理上的方便,可将相同类型的缓冲区链成一个队列。选项 B、C、D 属专用缓冲。

#### 04. A

输入并和输出并是在磁盘上开辟的存储空间,而输入/输出缓冲区是在内存中开辟的,因为 CPU 速度比 I/O 设备高很多,缓冲池通常在主存中建立。

#### 05. B

支持双向发送和接收数据的设备(如网卡等)应使用双缓冲区,双缓冲区可以实现同一时刻的双向数据传输,提高设备的效率和利用率。单缓冲区只能实现单向数据传输。多缓冲区和缓冲池用于提高 I/O 性能的技术,但不是必需的,也不一定适合所有的双向设备。

#### 06. B

缓冲区是一个存储区域,可由专门的硬件寄存器组成,也可利用内存来实现。缓冲区的作用是提高 CPU 和 I/O 设备之间的速度匹配,因为 CPU 的速度远高于 I/O 设备的速度,若没有缓冲区,则 CPU 就要等待 I/O 设备完成操作,造成资源浪费。缓冲区可用于输入设备和输出设备,如键盘、打印机等。缓冲区也可用于块设备和字符设备,如磁盘、串口等。

#### 07. B

两个进程之间若只设置单缓冲区,则同一时刻只能实现单向传输,但可在一段时间内用于发送数据,另一段时间内用于接收数据。若设置双缓冲区,则可以实现双向同时的并行传输。

#### 08. D

选项 A 和 C 都是动态分区分配的常用算法,选项 B 是进程调度的常用算法,设备分配的常用算法主要有先来先服务算法和最高优先级优先算法。

#### 09. A

采用单缓冲区传送数据时,设备与处理机对缓冲区的操作是串行的,当进行第 $i$ 次读磁盘数据送至缓冲区时,系统再同时读出用户区中第 $i-1$ 次数据进行计算,此两项操作可以并行,并与数据从缓冲区传送到用户区的操作串行进行,所以系统处理一块数据所用的总时间为 $\max(80\mu s, 30\mu s) + 40\mu s = 120\mu s$。


<!-- page: 346 -->

10. D

计算处理一个磁盘块数据的平均时间,可以假定系统的初始状态:用户区为空,缓冲区1为满,缓冲区2为空,如下图所示。① 0~T₂时段,将缓冲区1中的数据送入用户区;② T₂~T₂+T₃时段,处理用户区中的数据,③ 0~T₁时段,将数据从磁盘送入缓冲区2,只有②和③都完成后,系统才重新回到初始状态,因此平均处理一个磁盘块数据的时间为 max(T₁, T₂ + T₃)。


11. B

缓冲区主要解决输入/输出速度比CPU处理的速度慢而造成数据积压的矛盾。所以当I/O花费的时间比CPU处理时间短很多时,缓冲区没有必要设置。

12. C

在缓冲机制中,无论是单缓冲、多缓冲还是缓冲池,因为缓冲区是一种临界资源,所以在使用缓冲区时都有一个申请和释放(互斥)的问题需要考虑。

13. D

在鼠标移动时,若有高优先级的操作产生,为了记录鼠标活动的情况,必须使用缓冲技术,选项I正确。由于磁盘驱动器和目标或源I/O设备间的吞吐量不同,必须采用缓冲技术,选项II正确。为了能使数据从用户作业空间传送到磁盘或从磁盘传送到用户作业空间,必须采用缓冲技术,选项III正确。为了便于多幅图形的存取及提高性能,缓冲技术是可以采用的,特别是在显示当前一幅图形又要得到下一幅图形时,应采用双缓冲技术,选项IV正确。

14. A

DCT是设备控制表;COCT是控制器控制表;CHCT是通道控制表;PCB是进程控制块,不属于设备管理的数据结构。

15. D

设备的分配方式主要有独享分享、共享分配和虚拟分配,选项D是内存的分配方式。

16. A

在设备分配的过程中,访问数据结构的顺序通常是按设备管理的逻辑层次来安排的。设备分配过程通常从系统设备表(SDT)开始,然后依次获取设备控制表(DCT)、控制器控制表(COCT)和通道控制表(CHCT)中的信息,最终完成对设备的分配。

17. C

共享设备是指在一个时间间隔内可被多个进程同时访问的设备,只有磁盘满足。打印机在一个时间间隔内被多个进程访问时打印出来的文档就会乱;磁带机旋转到所需的读/写位置需要较长时间,若一个时间间隔内被多个进程访问,磁带机就只能一直旋转,没时间读/写。

18. D

在单机系统中,最关键的资源是处理器资源,最大化地提高处理器利用率,就是最大化地提高系统效率。多道程序设计技术是提高处理器利用率的关键技术,其他均为设备和内存的相关技术。

19. C

SPOOLing技术是操作系统中采用的一种将独占设备改造为共享设备的技术。通过这种技术处理后的设备通常称为虚拟设备。

20. B


<!-- page: 347 -->

SPOOLing 技术将一台物理设备虚拟为多台逻辑设备,以减少设备的闲置时间,提高设备的并发度和吞吐量,因此 SPOOLing 技术的主要目的是提高独占设备的利用率。

21. A

输入井和输出井是在磁盘上开辟的两大存储空间。输入井模拟脱机输入时的磁盘设备,用于暂存 I/O 设备输入的数据;输出井模拟脱机输出时的磁盘,用于暂存用户程序的输出数据。为了缓和 CPU,打印结果首先送到位于磁盘固定区域的输出井。

22. D

SPOOLing 技术需要使用磁盘空间(输入井和输出井)和内存空间(输入/输出缓冲区),不需要外围计算机的支持。

23. A

SPOOLing 系统主要包含三部分,即输入井和输出井、输入缓冲区和输出缓冲区以及输入进程和输出进程。这三部分由预输入程序、井管理程序和缓输出程序管理,以保证系统正常运行。

24. B

通过 SPOOLing 技术可将一台物理 I/O 设备虚拟为 I/O 设备,同样允许多个用户共享一台物理 I/O 设备,所以 SPOOLing 并不是将物理设备真的分配给用户进程。

25. D

构成 SPOOLing 系统的基本条件是不仅要有大容量、高速度的外存作为输入井和输出井,还要有 SPOOLing 软件,因此选项 A 错误、选项 B 不够全面,同时利用 SPOOLing 技术提高了系统和 I/O 设备的利用率,进程不必等待 I/O 操作的完成,因此选项 C 也不正确。

26. A

SPOOLing 技术将独占设备虚拟成共享设备,因此必须先有独占设备才行。下面说明 SPOOLing 技术如何加快作业执行的速度,提高独占设备的利用率。进程不需要等待打印机空闲,只需将输出数据送到输出井,然后继续执行其他操作,这样就提高了进程的效率。打印机不需要空闲等待进程的输出,只需从输出井中读取数据进行打印,然后读取下一个数据,这样就提高了打印机的效率。输出进程可以根据输出井中的数据量和优先级来安排打印顺序,从而平衡各个进程的等待时间和响应时间,这样就提高了系统的性能。输出进程可以减少对打印机的切换次数,从而减少系统的开销,进而提高打印机的利用率。

27. A

SPOOLing 技术需有高速大容量且可随机存取的外存支持,通过预输入和缓输出来减少 CPU 等待慢速设备的时间,将独享设备改造成共享设备。

28. C

利用假脱机技术可将独享设备改造为可供多个用户共享的虚拟设备,各作业在执行期间只使用虚拟设备。采用假脱机技术,将磁盘的一部分作为公共缓冲区以代替打印机,用户对打印机的操作实际上是对磁盘的存储操作,用以代替打印机的部分由虚拟设备完成。

29. D

独占设备采用静态分配方式,而共享设备采用动态分配方式。

30. C

当用户使用打印机打印某文件时,需要通过文件系统来访问磁盘上的数据,然后通过设备管理程序来控制打印机的输出。打印机启动程序只能初始化打印机,不能直接访问磁盘上的数据。

31. C


<!-- page: 348 -->

设备寄存器写命令是由设备驱动程序完成的。检查用户是否有权使用设备属于设备保护,是由设备独立性软件完成的。将二进制整数转换成 ASCII 码的格式打印是通过 I/O 库函数完成的,属于用户层软件。缓冲区管理属于输入/输出的共有操作,是由设备独立性软件完成的。缓冲区是内存中的区域,显然不是由设备驱动程序完成的。

32. B

不同厂家的设备通常提供不同的驱动程序,对应不同的中断处理,因此需要驱动程序来完成,选项 I 正确。驱动程序仅有一部分需要用汇编语言编写,其余部分可用高级语言编写,选项 II 错误。不同型号的磁盘的调度方式不一定相同,磁盘调度由磁盘驱动程序完成,选项 III 正确。不同的操作系统有不同的驱动程序接口,因此驱动程序要根据操作系统的要求进行定制,选项 IV 错误。

33. D

设备驱动程序的功能是管理 I/O 设备。数据的分析和缓冲是由进程或操作系统完成的。

34. B

用户层软件发出的命令是设备独立性软件提供的统一接口,需要由驱动程序将这些抽象要求转化为具体要求,才能被设备控制器识别,例如将抽象要求中的盘块号转化为磁盘的柱面号、盘面号和扇区号。然后,驱动程序会检查服务请求是不是该设备可以执行的,之后检查设备的状态,只有设备处于就绪状态时才能启动,最后传送此次 I/O 的参数并启动设备。

35. A

printf()是进行输出的函数,最终需要在内核态执行 I/O 指令来完成输出的功能。系统调用函数中包含一条陷入指令,也称 trap 指令,会让 CPU 陷入内核态执行相应的服务程序。

[tbl-149.md](tbl-149.md)

36. A

用户程序对 I/O 设备的请求采用逻辑设备名,而程序实际执行时使用物理设备名,它们之间的转换是由设备无关软件层完成的。主设备和从设备是总线仲裁中的概念。

37. B

在单缓冲区中,当上一个磁盘块从缓冲区读入用户区完成时,下一磁盘块才能开始读入,也就是当最后一个磁盘块读入用户区完毕时所用的时间为 $150 \times 10 = 1500\,\mu\mathrm{s}$,加上处理最后一个磁盘块的时间 $50\,\mu\mathrm{s}$,得 $1550\,\mu\mathrm{s}$。双缓冲区中,不存在等待磁盘块从缓冲区读入用户区的问题,10 个磁盘块可以连续从外存读入主存缓冲区,加上将最后一个磁盘块从缓冲区送到用户区的传输时间 $50\,\mu\mathrm{s}$ 及处理时间 $50\,\mu\mathrm{s}$,也就是 $100 \times 10 + 50 + 50 = 1100\,\mu\mathrm{s}$。

38. C

数据块 1 从外设到用户工作区的总时间为 105,在这段时间中,数据块 2 未进行操作。在数据块 1 进行分析处理时,数据块 2 从外设到用户工作区的总时间为 105,这段时间是并行的。再加上数据块 2 进行处理的时间 90,总共是 300。

39. C

计算柱面号、磁头号和扇区号的工作是由设备驱动程序完成的。题中的功能因设备硬件的不同而不同,因此应由厂家提供的设备驱动程序实现。

40. A

磁盘和内存的速度差异,决定了可以将内存经常访问的文件调入磁盘缓冲区,从高速缓存中复制的访问比磁盘 I/O 的机械操作要快很多。


<!-- page: 349 -->

## 41. D

SPOOLing 利用专门的外围控制机,将低速 I/O 设备上的数据传送到高速磁盘上,或者相反。SPOOLing 的意思是外部设备同时联机操作,也称假脱机输入/输出操作,是操作系统中采用的一项将独占设备改造成共享设备的技术。高速磁盘即外存,选项 A 正确。SPOOLing 技术建立在多道程序设计技术的基础上,在一个时间段内,输入进程、输出进程是可以和运行的作业进程并发执行的,选项 B 正确。SPOOLing 技术实现了将独占设备改造成共享设备的技术,选项 C 正确。设备与输入并/输出并之间数据的传送是由系统实现的,选项 D 错误。

## 42. D

设备可视为特殊文件,选项 A 正确。用户使用逻辑设备名来访问物理文件,有利于设备独立性,选项 B 正确。通过逻辑设备名访问物理设备时,需要建立逻辑设备和物理设备之间的映射关系,选项 C 正确。应用程序按逻辑设备名访问设备,再经驱动程序的处理来控制物理设备,若更换物理设备,则只需更换驱动程序,而无须修改应用程序,选项 D 错误。

## 43. A

厂家在设计一个设备时,通常会为该设备编写驱动程序,主机需要先安装驱动程序,才能使用设备。当一个设备被连接到主机时,驱动程序负责初始化设备(如将设备控制器中的寄存器初始化),选项 B 正确。若采用程序直接控制方式,进程不会被阻塞,进程会处于等待状态;若采用中断控制方式,则驱动程序启动 I/O 操作后,将调出其他进程执行,而当前用户进程被阻塞;若采用 DMA 控制方式,则驱动程序对 DMA 控制器初始化后,便发送“启动 DMA 传送”命令,外设开始传送数据,同时 CPU 执行处理器调度程序,当前用户进程被阻塞,选项 C 正确。设备的读/写操作本质就是在设备控制器和主机之间传送数据,而只有厂家知道设备控制器的内部实现,因此也只有厂家提供的驱动程序能控制设备的读/写操作,选项 D 正确。厂家会根据设备特性,在驱动程序中实现一种合适的 I/O 控制方式,不同的 I/O 控制方式需要不同的驱动程序来实现数据的传输和控制,例如,中断驱动方式需要驱动程序能够响应中断信号,DMA 方式需要驱动程序能够设置 DMA 控制器的寄存器,通道控制方式需要驱动程序能够执行通道指令等,选项 A 错误。

## 44. D

设备的类型决定了设备的固有属性,如独占性、共享性、可虚拟性等,不同类型的设备需要采用不同的分配方式,如独占分配、共享分配、虚拟分配等。设备的访问权限决定了哪些进程可以使用哪些设备,以保证系统的安全性和保密性,通常系统设备只能由系统进程或特权进程访问,用户设备只能由用户进程或授权进程访问。设备的占用状态决定了设备是否可以被分配给请求进程,以及如何处理等待进程,若设备空闲,则通常可以直接分配给请求进程;若设备忙,则需要将请求进程排入设备队列,并按照一定的算法进行调度。逻辑设备与物理设备的映射关系决定了如何通过逻辑地址访问物理地址,以提高系统的灵活性和可扩展性,通常系统会为每个物理设备分配一个逻辑名,并建立一个系统设备表来记录逻辑名与物理名之间的对应关系。

## 45. C

以 C 语言中 scanf() 函数的执行过程为例,用户请求通过键盘输入数据,当程序执行到 scanf() 时,触发系统调用,CPU 切换到内核态,执行系统调用服务例程,系统调用的内核程序进行一些初始化操作,启动外设,同时阻塞该用户进程,直到键盘输入数据,键盘中断服务例程(实际上是驱动程序)将数据从 I/O 接口(键盘控制器)中的数据寄存器取出并送至内核缓冲区,然后唤醒用户进程,用户进程被唤醒后进入就绪队列,等得到 CPU 运行后,再将内核缓冲区中的数据送至用户缓冲区,最后进行系统调用的返回。综上所述,键盘中断服务例程执行结束后,所输入数据的存放位置是内核缓冲区,当系统调用结束时,所输入数据才被送至用户缓冲区。


<!-- page: 350 -->

# 二、综合应用题

## 01.【解答】

分析:首先,我们来看这些功能是不是应该由操作系统来完成。操作系统是一个代码相对稳定的软件,它很少发生代码的变化。若1)由操作系统完成,则操作系统就必须记录逻辑块和磁盘细节的映射,操作系统的代码会急剧膨胀,而且对新型介质的支持也会引起代码的变动。若2)也由操作系统完成,则操作系统需要记录不同生产厂商的不同数据,而且后续新厂商和新产品也无法得到支持。

因为1)和2)都与具体的磁盘类型有关,因此为了能够让操作系统尽可能多地支持各种不同型号的设备,1)和2)应由厂商所编写的设备驱动程序完成。3)涉及安全与权限问题,应由与设备无关的操作系统完成。4)应由用户层来完成,因为只有用户知道将二进制整数转换为ASCII码的格式(使用二进制还是十进制、有没有特别的分隔符等)。

## 02.【解答】

4个数据块的处理过程如下图所示,总耗时 $390\mu \mathrm{s}$,每块的平均处理时间为 $390\mu \mathrm{s} / 4 = 97.5\mu \mathrm{s}$。


从上图可以看出,处理 $n$ 个数据块的总耗时为 $(80n + 20 + 50)\mu \mathrm{s} = (80n + 70)\mu \mathrm{s}$,每个数据块的平均处理时间为 $(80n + 70) / n\mu \mathrm{s}$,当 $n$ 较大时,平均时间近似为 $\max(C, T) = 80\mu \mathrm{s}$。

## 03.【解析】

1)正确的执行顺序为②⑥④③①⑤,因此操作①的前一个操作是③,后一个操作是⑤:操作⑥的后一个操作是④。下面以scanf()函数的执行过程为例分析相关操作顺序。首先用户进程P调用I/O标准库的scanf()函数,scanf()调用系统调用封装函数read(),在这个函数中有一条陷阱指令,通过它陷入内核,内核调出read()对应的sys_read()系统调用服务例程进行执行,进入内核后,在设备无关层进行若干调用,最终到设备驱动层进行处理,设备驱动程序对本次I/O进行初始化操作,然后执行操作系统的进程调度程序scheduler(),由调度程序scheduler()来阻塞用户进程P,并调度其他进程执行。此后,在用户输入字符之前,CPU运行其他进程,键盘等待用户输入数据,当用户在键盘上输入字符后,外设向CPU发出相应的中断请求,CPU响应中断后,启动键盘中断处理程序,该处理程序对I/O中断进行简单通用的处理后,唤醒具体的处理键盘输入的驱动程序,该驱动程序将字符从键盘控制器读入系统缓冲区,数据传输完成后,唤醒P并将其插入就绪队列,进行中断返回,进程P也从系统调用返回。相关过程如下图所示。



<!-- page: 351 -->

2)在操作②之后CPU一定从进程P切换到其他进程。在操作①之后CPU调度程序才能选中进程P执行。
3)设备驱动程序负责驱动I/O设备工作,I/O操作初始化,执行具体的I/O指令。将字符从键盘控制器读入系统缓冲区是和键盘直接相关的具体操作,完成操作③的代码属于键盘驱动程序。
4)键盘中断处理程序执行时,进程P还在阻塞队列,处于阻塞态。中断处理程序、设备驱动程序、设备独立性软件都属于内核I/O软件层,执行相关代码时,CPU处于内核态。

## 5.3 磁盘和固态硬盘①

在学习本节时,请读者思考以下问题:

1)在磁盘上进行一次读/写操作需要哪几部分时间?其中哪部分时间最长?
2)存储一个文件时,当一个磁道存储不下时,剩下的部分是存在同一个盘面的不同磁道好,还是存在同一个柱面上的不同盘面好?

本节主要介绍磁盘管理的方式。学习本节时,要重点掌握计算一次磁盘操作的时间,以及对于给定访盘的磁道序列,按照特定算法求出磁头通过的总磁道数及平均寻道数。

## 5.3.1 磁盘

**临界参数** ➤ 磁盘容量的计算(2019)

磁盘(Disk)是表面涂有磁性物质的物理盘片,通过一个称为磁头的导体线圈从磁盘存取数据。在读/写操作期间,磁头固定,磁盘在下面高速旋转。如图5.18所示,磁盘盘面上的数据存储在一组同心圆中,称为磁道。每个磁道与磁头一样宽,一个盘面有上千个磁道。磁道又划分为几百个扇区,每个扇区固定存储大小(如1KB),一个扇区称为一个盘块。相邻磁道及相邻扇区间通过一定的间隙分隔开,以避免精度错误。注意,因为扇区按固定圆心角度划分,所以密度从最外道向里道增加,磁盘的存储能力受限于最内道的最大记录密度。

**注意**

为了提高磁盘的存储容量,充分利用磁盘外层磁道的存储能力,现代磁盘不再将内外磁道划分为相同数目的扇区,而将盘面划分为若干环带,同一环带内的所有磁道具有相同的扇区数,显然,外层环带的磁道拥有较内层环带的磁道更多的扇区。

**临界指标** ➤ 将簇号转化为磁盘物理地址的过程(2019)

磁盘安装在一个磁盘驱动器中,它由磁头臂、用于旋转磁盘的转轴和用于数据输入/输出的电子设备组成。如图5.19所示,多个盘片垂直堆叠,组成磁盘组,每个盘面对应一个磁头,所有磁头固定在一起,与磁盘中心的距离相同且只能“共进退”。所有盘片上相对位置相同的磁道组成柱面。扇区是磁盘可寻址的最小单位,磁盘上能存储的物理块数目由扇区数、磁道数及磁盘面数决定,磁盘地址用“柱面号·盘面号·扇区号”表示。

① 本节内容与《计算机组成原理考研复习指导》一节中的3.4节联系密切,建议结合复习。


<!-- page: 352 -->

图5.18 磁盘盘片

图5.19 磁盘的结构

读/写磁盘数据块的过程如下:①根据柱面号移动磁头臂,让磁头移动到对应的柱面;②激活对应盘面的磁头;③当磁盘旋转时,磁头从对应扇区上划过,从而完成对指定扇区的读/写。

磁盘按不同的方式可分为若干类型:磁头相对于盘片的径向方向固定的称为固定头磁盘,这种磁盘中的每个磁道有一个磁头。磁头可移动的称为活动头磁盘,磁头臂可来回伸缩定位磁道。盘片永久固定在磁盘驱动器内的称为固定盘磁盘。盘片可移动和替换的称为可换盘磁盘。最早的磁盘由IBM公司研发,称为温彻斯特磁盘,它是一种磁头活动而盘片固定的磁盘存储器。

操作系统中几乎每介绍一类资源及其管理时,都要涉及一类调度算法。用户访问文件,需要操作系统的服务,文件实际上存储在磁盘中,操作系统接收用户的命令后,经过一系列的检验访问权限和寻址过程后,最终都会到达磁盘,控制磁盘将相应的数据信息读出或修改。当有多个请求同时到达时,操作系统就要决定先为哪个请求服务,这就是磁盘调度算法要解决的问题。