跳转至

Relax1000 操作系统 · 第1章 计算机系统概述 · 解析

第1章 计算机系统概述

本章 52 题;解析册印刷页 152–165。

速对答案(原书): DBCAB CADAB ABBBA BBABC CCCAC ACBBD ABCAC CDBCC ABCCA DCABD DA

Q1

速对表原值: D

详细解析标注: D

A正确,并发是指两个或多个事件在同一时间间隔内发生。在多道程序环境下,在内存中同时装有若干道程序,以便当运行某道程序时,利用其因 I/O 操作而暂停执行时的 CPU 空档时间,再调度另道程序运行,从而实现多道程序交替运行,使 CPU 保持忙碌状态。

B 正确,并行性是指系统具有同时进行运算或操作的特性,在同一时刻能完成两种或两种以上的工作。

C 正确,一个能够并行执行多个任务的系统(即有多处理单元)自然也能够通过在这些处理单元上交替执行更多的任务来实现并发。并行是并发的一种特殊形式,或者说,并行系统可以更容易地实现并发。

D 错误,单处理器系统通过多道程序技术和快速的任务切换可以实现并发,使得多个任务在一段时间内交替使用 CPU。但是,由于在任何一个时刻只有一个任务真正在 CPU 上执行,因此无法实现真正的并行(多个任务在同一时刻执行)。

返回题目

Q2

速对表原值: B

详细解析标注: B

操作系统管理计算机裸机和计算机软、硬件资源,并向用户和应用程序提供接口。操作系统并不提供虚拟机管理程序,(第二类)虚拟机管理程序是一种应用程序。故选 B。

返回题目

Q3

速对表原值: C

详细解析标注: C

批处理系统中,用户一旦把作业提交给系统,那么直至作业完成,用户都不能与自己的作业进行交互,为此才诞生了分时系统,故Ⅰ正确。单道批处理系统中,为了实现对作业的连续处理,需要先把一批作业以脱机 IO 方式输入到磁带上,并在系统中配上监督程序。在它的控制下,这批作业能一个接一个地被连续处理。故Ⅱ错误。多道批处理系统中,用户所提交的作业都先存放在外存上并排成一个队列,作业调度程序按一定的算法从后备队列中选择若干作业调入内存,它们在管理程序的控制下相互穿插地运行,共享系统中的各种硬软件资源。当某道程序因请求 I/O 操作而暂停运行时,CPU 便立即转去运行另一道程序,这是通过中断机制实现的,无需多 CPU 的支持,故Ⅲ错误,Ⅳ正确。综上,选 C。

返回题目

Q4

速对表原值: A

详细解析标注: A

多道批处理系统通过组织作业(编码或数据)使 CPU 总有一个作业可执行,从而提高了 CPU 的利用率、系统吞吐量和 IO 设备利用率,但系统要付出额外的开销来组织作业和切换作业。单道批处理系统与之相比,CPU 利用率更低,系统开销更小,系统吞吐量更小,I/O 设备利用率更低,故选Ⅰ、Ⅱ。

注意:有同学可能会认为Ⅰ与Ⅳ正好对应,CPU 利用率低,那 I/O 利用率就高,从而错选 B。单道批处理系统,CPU 和 I/O 同一时刻只能运行一个,而多道批处理系统可以通过中断技术实现 CPU 与 I/O并行,两者的利用率均更高。

返回题目

Q5

速对表原值: B

详细解析标注: B

多道程序系统(多道批处理系统),为使系统中的多道程序间能协调地运行,系统必须解决下述一系列问题。

①争用处理机问题:系统既要能满足各道程序运行的需要,又要能提高处理机的利用率。

②内存分配与保护问题:系统应能为每道程序分配必要的内存空间,以使它们“各得其所”,且不会因某道程序出现异常情况而破坏其他程序。

③I/O 设备分配问题:系统应采取适当的策略来分配系统中的 IO 设备,以达到既能方便用户对设备的使用,又能提高设备利用率的目的。

④文件的组织与管理问题:系统应能有效地组织存放在系统中的大量程序和数据,以使它们既便于用户使用,又能保证数据的安全性。

⑤作业管理问题:系统中存在着各种作业(应用程序),系统应能对系统中所有的作业进行合理的组织,以满足这些作业对应用户的不同要求。

⑥用户与系统的接口问题:为使用户能方便地使用 OS,OS 还应提供用户与 OS 之间的接口。故 A,C,D 正确。早期的多道批处理操作系统会将所有进程的数据全部调入主存,再让多道程序并发执行,即使不支持虚拟存储管理,也能实现“多道程序并发”,B 错误。

返回题目

Q6

速对表原值: C

详细解析标注: C

Ⅰ正确,当采用多道程序设计时,一个进程在进行 I/O 的时候,另一个进程可以同步使用 CPU,而单道程序设计下系统内存中同时仅存在一个进程,当进程占用 CPU 时其他进程无法使用 CPU,同样当进程在 I/O 时其它进程也无法使用 CPU,因此多道程序可以同时提高 CPU 和 I/O设备的利用率。

Ⅱ错误,批处理程序分为单道批处理和多道批处理。多道批处理系统中用户所提交的作业都先存放在外存上并排成一个队列,作业调度程序按一定的算法从后备队列中选择若干作业调入内存,它们在管理程序的控制下相互穿插地运行。多道批处理不提供人机交互能力。

Ⅲ正确,Ⅳ正确。静态重定位(地址转换在进程装入时一次完成,无需地址重定位寄存器)和动态重定位(内存中的程序可能移动,需要重定位寄存器的支持)均可以适用于多道程序系统。而这两种方式下都需要进行内存保护,以防止多个进程运行时访问的内存空间不会发生冲突。综上所述,选 C。

返回题目

Q7

速对表原值: A

详细解析标注: A

Ⅰ错误,批处理系统的最主要缺点是缺乏交互性。Ⅰ的表述肯定是错的,多道批处理系统是可以并发执行多个程序的。这里的多道是指允许多个进程同时驻留在主存中,按照某种原则分派处理机,逐个执行这些程序。这里其实还考查了并发性的概念:并行性是指两个或多个事件在同一时刻发生;而并发性是指两个或多个事件在同一时间间隔内发生。

Ⅱ错误,多道程序设计是指把多个程序同时存放在内存中,使它们同时处于运行状态。但是,在单处理机环境中,同一时刻只能有一个进程在执行。

Ⅲ正确,有了中断后才能实现进程间并发,进程间并发才有可能把多个进程装入到内存实现多道程序技术。

Ⅳ错误,程序道数如果过多的话,会导致每个程序分配到的内存不够,很多程序所需的程序和代码需要时从磁盘调入到内存,系统会频繁地处于 I/O 状态中,导致系统效率降低。

返回题目

Q8

速对表原值: D

详细解析标注: D

A. 允许用户修改系统时间:这仅改变系统时钟的设置,与进程调度和响应时间无关,不会改善响应时间。B. 加大时间片:加大时间片会导致每个进程一次性占用 CPU 的时间变长。如果就绪队列中有多个进程,排在队尾的进程需要等待前面所有进程运行完各自的大时间片,这会恶化(延长)响应时间。如果时间片大到一定程度,分时系统甚至会退化为先来先服务(FCFS)系统。C. 允许中断嵌套:中断嵌套允许高优先级中断在处理低优先级中断时被响应,这可以减少中断延迟,从而间接改善系统对 I/O 事件的响应。但中断嵌套主要影响中断处理效率,对进程级的响应时间改善不如调度策略直接。D. 采用抢占式优先级调度:这种调度方式系统可以根据进程的类型赋予不同的优先级(例如,将与用户交互的前台进程设为高优先级,后台计算进程设为低优先级)。一旦高优先级的交互式进程就绪,它能够立即抢占当前正在运行的低优先级进程,从而使交互请求得到最及时的处理,显著改善了交互进程的响应时间。所以正确答案为 D 选项。

返回题目

Q9

速对表原值: A

详细解析标注: A

Ⅰ必须实现。分时操作系统的核心是让多个用户通过终端与计算机交互,每个用户感觉自己独占计算机。 为了实现这一点,系统采用时间片轮转的方式,让每个进程执行一小段时间后就切换到下一个进程。 这种时间片的控制和进程的切换依赖于时钟中断。当一个进程的时间片用完时,时钟硬件会产生中断,操作系统内核响应中断,剥夺当前进程的 CPU 使用权,并进行进程调度。Ⅱ必须实现。分时系统允许多个用户(进程)并发执行并共享系统资源(如内存、I/O 设备、文件等)。为了防止并发访问共享资源时产生冲突和数据不一致,操作系统必须提供共享资源保护机制,如互斥锁、信号量等,确保资源的安全和有序访问。Ⅲ必须实现。分时系统的基础是多道程序设计。 多道程序设计允许内存中同时驻留多个用户作业(进程),这些进程可以并发执行,从而提高了 CPU 和系统资源的利用率。没有多道程序设计,就无法实现多个用户同时使用计算机并进行交互的场景。Ⅳ非必须实现,但非常普遍。虚拟内存管理技术(如请求分页)允许程序使用的逻辑地址空间远大于实际物理内存,并通过按需调页和页面置换来管理内存。 虽然虚拟内存能极大地提高内存利用率和支持运行更大的程序或更多的并发进程,但它并非分时操作系统存在的绝对必要条件。早期的分时系统可能不具备完善的虚拟内存管理,而是依赖于如对换(swapping)等技术。现代分时操作系统几乎都实现了虚拟内存管理,因为它能显著提升系统性能和用户体验。

返回题目

Q10

速对表原值: B

详细解析标注: B

响应时间是响应所有就绪进程的时间之和,即响应时间=就绪进程数x时间片。因此当响应时间最大为 2s 时,时间片最大为 2s/100=20ms,所以正确答案为 B 选项。

返回题目

Q11

速对表原值: A

详细解析标注: A

实时操作系统要保证实时性和可靠性,当更高优先级的事件到达时,必须优先执行该事件,因此必须允许中断嵌套和采用抢占式优先级调度。实时操作系统更注重实时性和可靠性,因此分布式操作系统和图形界面是不必要的。所以正确答案为 A 选项。

返回题目

Q12

速对表原值: B

详细解析标注: B

单道批处理系统中只有一个进程在内存中,每次只能运行一道程序,无多道程序技术。

返回题目

审计旁注(非原文):口径风险

D 只适用于软实时;硬实时不允许超时,原题未限定实时类型。

Q13

速对表原值: B

详细解析标注: B

A选项错误。 缺页指的是程序访问的内存页不在物理内存中,处理器会触发缺页异常,导致 CPU 从用户态变为内核态 。但在处理中断或异常进入内核态的过程中,属于同一个进程的上下文切换,不涉及进程的切换 。

B 选项正确。 一个进程同时拥有用户栈和内核栈。进程在从用户态进入内核态时,进程的用户程序与内核程序均属于同一个进程,共用同一虚拟地址空间 ;并且发生特权级切换时,由硬件自动实现堆栈的切换。

C 选项错误。 在允许多重中断或涉及特权级切换的情况下(如缺页异常处理及返回),需要保存和恢复程序状态字寄存器(PSW)。只有普通的子程序调用或全程在用户态下的函数调用才不需要保存PSW。

D 选项错误。 内核程序运行在内核态,不仅可以执行所有特权指令,也可以执行非特权指令。

原页版面片段(用于核对图表、矩阵或代码)

第1章 Q13 原页片段

返回题目

Q14

速对表原值: B

详细解析标注: B

Ⅰ. 开中断和关中断既可以用硬件实现也可以软件实现,选项中的 CLI 关中断指令(以及 STI 开中断指令)都是软件实现,属于特权指令,必须在内核态执行。

Ⅱ.执行 I/O 操作的指令:I/O 指令通常是特权指令,只能在内核态执行。用户程序如果尝试在用户态执行 I/O 指令,会引发保护性异常,强制进入内核态处理,但指令本身不会在用户态成功执行其预定功能。

Ⅲ.自陷指令(trap)是用户程序请求操作系统服务的正常方式。该指令本身是在用户态启动执行的,其执行的直接结果就是使 CPU 切换到内核态,然后由操作系统内核响应该中断/陷入请求。

Ⅳ.断点设置指令:设置断点是调试程序时常用的一种手段。在某些体系结构中(如 x86),有专门的断点中断指令(如 INT 3),该指令可以在用户态执行,执行后会引发一个调试异常,使 CPU 陷入内核态,由调试器或操作系统内核接管处理。设置断点的目的是为了让程序在运行至断点位置时触发中断,而设置断点这一步骤是可以发生在用户态的。综上所述,选 B。

返回题目

Q15

速对表原值: A

详细解析标注: A

I 正确,修改 PSW 直接影响 CPU 运行状态和中断屏蔽,属于特权指令。II 错误,读取时钟是非特权指令(用户程序可以读取时间),但设置时钟是特权指令。III 正确,修改页表基址寄存器会改变整个地址映射关系,属于特权指令。IV 错误,NOP 是空操作指令,不涉及任何系统资源控制,属于非特权指令。

返回题目

Q16

速对表原值: B

详细解析标注: B

I 正确,页面不在内存中触发缺页异常,CPU 切换到内核态进行页面调入。II 正确,用户进程访问内核空间地址会触发保护异常(越权访问),CPU 切换到内核态处理。III 正确,段不存在触发段错误异常,CPU 切换到内核态处理。IV 错误,页面在内存中且是合法的用户空间地址,这是正常的内存访问,MMU 直接完成地址转换,不会触发任何异常,CPU 保持在用户态。

返回题目

Q17

速对表原值: B

详细解析标注: B

① sin() 是普通的 C 语言标准数学库函数,它不需要请求操作系统的特权服务,全程在用户态下执行。最少:0 次 最多:0 次

② 定时器到时会产生时钟中断(外部中断)。外部中断一旦发生,硬件会自动打断当前程序的执行,强制 CPU 陷入内核态,交由操作系统的时钟中断处理程序来处理(例如进行时间片轮转调度)。这是不可避免的确定性事件。最少:1 次 最多:1 次

③ TLB(快表)缺失不等于缺页异常!

  • 最少情况(0次): 发生 TLB 缺失后,硬件(MMU)会自动去主存中查找慢表(页表)。如果对应的页表项是有效的(即该页面已经在物理内存中),硬件会自动将该页表项装入 TLB 并继续执行。整个过程由硬件自动完成,操作系统完全不介入,CPU 保持在用户态。

  • 最多情况(1 次): 硬件查慢表时,发现对应的页表项无效(该页面被换出到了磁盘)。此时硬件才会真正触发缺页异常(内中断/故障),强制 CPU 切换到内核态,由操作系统的缺页处理程序介入调页。

④ 执行除法指令 DIV R0, R1 这是一条普通的算术运算指令。

  • 最少情况(0 次): 寄存器 R1 的值不为 0。指令在 CPU 的 ALU 中正常运算结束,全程在用户态完成。

  • 最多情况(1 次): 寄存器 R1 的值为 0。此时硬件会检测到运算错误,触发除零异常(内中断/中止),强制 CPU 切换到内核态,交由操作系统进行异常处理(通常是终止该进程并报错)。最少切换次数 = 0(事件

①)+ 1(事件

②必然发生)+ 0(事件

③页表命中)+ 0(事件

④正常除法)= 1 次最多切换次数 = 0(事件

①)+ 1(事件

②必然发生)+ 1(事件

③触发缺页异常)+ 1(事件

④触发除零异常)= 3 次

返回题目

Q18

速对表原值: A

详细解析标注: A

为防止 OS 和用户程序受到错误用户程序的影响,双重模式执行提供了特权指令(privileged instruction)和非特权指令(non-privileged instuction)。

Ⅰ.特权指令,是指在内核态下运行的指令,它对内存空间的访问范围基本不受限制。它不仅能访问用户空间,还能访问系统空间。故Ⅰ错。

Ⅱ.非特权指令,是指在用户态下运行的指令。应用程序所使用的都是非特权指令,它只能完成一般性的操作和任务,不能对系统中的硬件和软件进行直接访问,对内存的访问范围也局限于用户空间。故Ⅱ对。

Ⅲ.Ⅳ.CPU 在用户态时只能执行非特权指令,在内核态时可以执行特权指令和非特权指令。故Ⅲ对,Ⅳ错。综上所述,选 A。

返回题目

审计旁注(非原文):改解析

非特权指令可在任意模式执行;应记“用户态只能执行非特权指令”。

Q19

速对表原值: B

详细解析标注: B

访问虚拟内存是进程直接访问内存,由 MMU 完成虚拟地址向物理地址的转换,这个过程由硬件完成不需要操作系统参与,只有发生缺页时才会触发缺页异常,由操作系统来完成异常处理。A、C、D 均由用户主动发起的请求操作系统提供的服务,属于系统调用的范畴,因此选 B。

返回题目

Q20

速对表原值: C

详细解析标注: C

A 错误。 中断隐指令由硬件在中断响应阶段自动执行,其核心任务是关中断、保存断点并引出中断服务程序。这一步恰恰标志着 CPU 从用户态进入内核态。

B 错误。 保存被中断进程的现场信息(如通用寄存器)是中断服务程序(内核程序)在内核态下执行的步骤,此时 CPU 已经处于内核态。

C 正确。 当中断或异常处理完,或者系统调用完成时,内核程序会执行中断返回指令(如 x86 中的IRET)。该指令会从内核栈中恢复被中断程序断点处的程序状态字寄存器(PSW)和指令指针寄存器(PC)。因为原 PSW 中标志位记录了原程序处于用户态,所以该指令执行完成时,CPU 就会恢复到用户态继续执行用户程序 。

D 错误。 阻塞进程、唤醒进程(即操作就绪/阻塞队列),属于系统控制数据结构的基本操作,完全是在内核态下由调度程序完成的,执行完毕后 CPU 仍在内核态。 (见笔记中进程切换部分,最好详细了解进程的切换全过程)

返回题目

Q21

速对表原值: C

详细解析标注: C

中断是操作系统响应硬件事件的核心机制。操作系统内核需要通过中断号快速定位到相应的中断服务例程的入口地址。因此,考虑到中断处理对响应速度的严格要求和通过中断号直接寻址的便利性,数组是存储中断向量表最适合的数据结构,选 C。

返回题目

Q22

速对表原值: C

详细解析标注: C

中断是指 CPU 对系统中或系统外发生的异步事件所做的一种响应。根据中断信号的来源,中断可以分为外部中断(或称硬件中断)和内部中断(或称异常、陷入)。外部中断(HardwareInterrupts):指来自 CPU处理器以外的中断信号,通常由外部设备(如I/O设备、时钟)或外部事件引起。

I. 时间片结束:在分时操作系统中,时间片结束是由时钟部件(定时器)产生的时钟中断引起的。定时器是 CPU 外部的硬件,因此时钟中断属于外部中断。

II. 键盘输入:键盘是外部 I/O 设备,当用户按下键盘按键时,键盘控制器会向 CPU 发出中断信号,请求处理输入。这属于典型的外部中断。IV I/O 操作结束:当外部设备(如磁盘、打印机等)完成 CPU 下达的 I/O 操作后,会向 CPU 发出中断信号,通知 CPU 操作已完成。这也是一种常见的外部中断。内部中断(Exceptions/Traps):指来自 CPU 处理器内部的中断信号,通常是由于 CPU 在执行指令过程中检测到某些错误或特定条件而引起的。

III.访存缺页:访存缺页是在执行一条指令的过程中,当该指令要访问的页面不在物理内存时,由CPU 内部的内存管理单元(MMU)检测到并产生的一种异常。这属于内部中断。综上所述,能够引起外部中断的是时间片结束、键盘输入和 I/O 操作结束。因此,选项Ⅰ、Ⅱ、Ⅳ正确,选 C。

返回题目

Q23

速对表原值: C

详细解析标注: C

中断是指 CPU 对系统中或系统外发生的异步事件所做的一种响应。根据中断信号的来源,中断可以分为外部中断(或称硬件中断)和内部中断(或称异常、陷入)。

I. 除数为 0:这是在执行除法指令时,CPU 检测到的算术运算错误。这种由指令执行错误引起的事件属于内部中断(异常)的一种。

II. 自陷指令(Trap Instruction):自陷指令是程序主动请求操作系统服务(如系统调用)或有意引发某种调试事件的指令。它是在执行用户程序指令时,由该指令本身引发的,导致 CPU 从用户态切换到内核态,因此属于内部中断(陷入或软中断)。

III. 断电:断电是由外部因素(如电源故障)引起的,通常由计算机硬件(如电源监控电路)检测并向 CPU 发出中断信号。这属于外部中断,而非内部中断。

IV. 无效存储访问:当程序试图访问其地址空间之外的内存,或者以不允许的方式(如用户态程序试图访问内核空间、对只读页面进行写操作)访问内存时,由 CPU 的内存管理单元(MMU)检测到并产生的一种错误。这属于内部中断(异常)的一种,例如段错误或页错误。综上所述,选项Ⅰ、Ⅱ、Ⅳ正确,选 C。

返回题目

Q24

速对表原值: A

详细解析标注: A

Ⅰ、Ⅱ:子程序调用只需保存程序断点,即该指令的下一条指令的地址;中断调用子程序不仅要保护断点(PC 的内容),而且要保护程序状态字寄存器的内容 PSW,故Ⅰ入选。Ⅲ、Ⅳ:通用寄存器属于中断处理程序所保存的“现场”,需要被中断处理所保存。对于子程序调用,通用寄存器的保存通常由软件(编译器生成的代码或程序员显式编写的代码)根据调用约定来完成,例如“调用者保存”或“被调用者保存”策略。硬件的 CALL 指令本身通常不负责保存所有通用寄存器。综上所述,选 A。

返回题目

Q25

速对表原值: C

详细解析标注: C

A 错误,中断向量表中存储的是中断处理程序的入口地址(而非完整代码)。

B错误,不同的异常类型有不同的处理程序入口,例如除零异常和缺页异常各有独立的处理程序。

C 正确,中断向量表通常存放在内存的固定位置,CPU硬件通过中断号直接计算偏移量来定位入口地址。

D错误,修改中断向量表是特权操作,用户程序无权直接修改。如果需要注册中断处理程序,必须通过系统调用请求内核代为操作。

返回题目

Q26

速对表原值: A

详细解析标注: A

I 正确,时钟中断由外部硬件定时器产生,属于异步外中断,与 CPU 正在执行什么指令无关。II 正确,时间片轮转(RR)、多级反馈队列等算法,必须依靠时钟中断来周期性递减时间片,没有时钟中断,进程一旦占有 CPU 就会一直运行到主动阻塞或结束。III 错误,时钟中断处理程序只是检查时间片是否耗尽。如果时间片未耗尽,或者就绪队列为空,或者当前进程是唯一的运行进程,则不会发生上下文切换。IV 错误:时钟中断频率过高,会导致 CPU 频繁陷入中断处理程序(上下文切换开销极大),降低系统有效吞吐量。V 错误,只要 CPU 处于开中断状态(中断允许标志IF=1),无论是在用户态还是内核态(执行系统调用时),一旦当前指令执行完毕,CPU就可以立即响应时钟中断。内核态并不免疫外中断!只有当 OS 内核为了保护临界区而显式关中断时,才会推迟响应(除了极少数修改内核数据结构的“关中断临界区”外,内核态在绝大部分时间内都是“开中断”的)。

返回题目

Q27

速对表原值: C

详细解析标注: C

A 项错误,中断通常在指令执行结束后被检测和响应,而异常是在指令执行期间被检测到的 。B 项正好说反了,中断是由 CPU 外部的硬件事件(如 I/O 设备)引起的,而异常是由CPU 内部的事件(如除零、缺页)引起的 。

C 项正确,这是两者最本质的区别。异常(如除零、非法指令、缺页)的发生与当前正在执行的那条指令直接相关,是这条指令执行结果的体现;而中断(如时钟中断、I/O 完成)是异步发生的,与当前执行的任何指令都没有直接关系 。

D 项错误,缺页属于异常(内中断),而 I/O 完成属于中断(外中断)。

返回题目

Q28

速对表原值: B

详细解析标注: B

本题对多个关于系统调用的细微知识点进行辨析。I 错误,操作系统提供给用户的接口主要有两类:命令接口(如 shell 命令行、图形用户界面)和程序接口(即系统调用)。系统调用只是程序接口的一部分,并非唯一的接口 。II 错误,系统调用属于程序接口(API),而联机命令接口是命令接口的一种,二者分类不同。尽管命令接口的底层实现确实依赖于系统调用,但从接口类型划分上不能混为一谈 。III 正确,当系统调用从用户态陷入内核态后,内核代码需要有自己的执行栈来保存上下文、处理参数和执行逻辑,这个栈就是内核栈。IV 正确,系统调用处理完毕后,需要通过特殊的返回指令(如 x86 的 iret 或 sysret)来恢复用户程序的现场并切换回用户态,这是态切换的逆过程 。因此,正确的叙述有 III 和 IV,共 2 个。

返回题目

Q29

速对表原值: B

详细解析标注: B

B 错误,不同的操作系统通常有其自己设计的系统调用接口,包括系统调用的名称、编号、参数以及具体功能实现。虽然有一些标准(如 POSIX)试图为类 UNIX 系统提供一定程度的接口统一性,但并不能说所有主流操作系统都采用完全相同的系统调用接口。

A 正确,用户程序在 CPU 用户态下执行,通过调用系统调用,将 CPU 控制权交给操作系统内核。

C 正确,系统调用服务例程是操作系统内核的一部分,因此它在内核态执行。在内核态下,操作系统拥有最高权限,可以执行所有特权指令(如 I/O 操作、修改内存管理寄存器等),并访问系统中的所有核心资源和数据结构,以完成用户程序的请求。

D 正确,这是系统调用的一个主要目的。通过将敏感操作(如设备访问、内存管理、文件系统操作)封装在内核态的系统调用中,操作系统可以对用户程序的请求进行检查和控制,确保这些操作不会危害系统的稳定性和安全性。

返回题目

Q30

速对表原值: D

详细解析标注: D

A 正确:当执行陷入指令时,硬件(中断隐指令)会自动将当前的断点(下一条指令的地址)和程序状态字(PSW)压入内核栈中,以确保安全。

B 正确:CPU 模式的切换(用户态→内核态)是高特权级操作,必须由硬件在响应内中断时自动修改 CPU 的运行模式寄存器完成。

C正确:硬件将控制权转交给内核的统一入口(如 system_call)后,操作系统软件会读取 EAX 中的系统调用号,去查系统调用跳转表,然后跳转到具体的服务例程。

D 错误:在服务程序执行完毕准备返回前,由操作系统软件而不是硬件执行逆操作来恢复之前保存的通用寄存器现场,最后执行中断返回指令(如 iret)回到用户态。

返回题目

Q31

速对表原值: A

详细解析标注: A

当陷入指令执行引发内中断时:I、III 正确(硬件完成): 硬件的中断隐指令会自动将 CPU 状态改为内核态,并自动将断点(PC)和程序状态字(PSW)压入内核栈保存。II 错误(软件完成): 通用寄存器(如 EAX, EBX 等)的保存是由操作系统的陷入处理程序(软件代码) 通过执行压栈指令来完成的,以防后续的内核代码覆盖用户态的寄存器现场。IV 错误(软件完成): 硬件只负责跳转到系统调用的统一总入口(如 system_call)。根据系统调用号查表并跳转到具体的服务例程,是由操作系统内核代码(软件) 完成的。综上,由硬件自动完成的仅有 I 和 III,故选 A。

返回题目

Q32

速对表原值: B

详细解析标注: B

先看 B,错误。本题考察对进程切换时机和状态的精确理解。

A 正确,时钟中断是外部中断,发生时 CPU 必须从当前执行的用户态切换到内核态来执行中断处理程序 。

B 错误,这是本题的陷阱所在。进程切换完成后,新调度的进程不一定在用户态开始执行。如果这个新进程之前是在内核态中被中断的(例如,它正在执行一个长耗时的系统调用等待外部设备 I/O 完成),那么当它被换下并重新调度回来时,它将在内核态继续执行其被中断的系统调用代码,直到该系统调用完成才会返回到用户态。

C 正确,进程切换的本质就是保存当前进程的 CPU 上下文(包括寄存器的值)到其 PCB中,然后从新进程的 PCB 中恢复其上下文 。

D 正确,时钟中断处理程序和进程调度程序都是操作系统内核的一部分,它们的执行当然在内核态。

返回题目

审计旁注(非原文):作废

A、B 均错;时钟中断发生前 CPU 不一定处于用户态。

Q33

速对表原值: C

详细解析标注: C

陷入指令(如 int $0x80 或 syscall)本质上是在用户态执行的一条特殊指令,执行后会立即引发一个内中断(软中断/访管中断),硬件响应此中断从而将 CPU 切换到核心态。

A 项错误。 陷入指令必须在用户态执行,它是用户程序主动请求内核服务的唯一“合法入口”。如果它是特权指令,用户程序就无权执行,系统调用也就无从发起了。

B 项错误。 系统调用是“陷阱(Trap)”,属于主动请求,服务完成后应该继续执行用户程序的下一条指令,因此保存的断点是下一条指令的地址。只有像“缺页异常”这种故障(Fault),保存的才是当前指令地址(以便页面调入后重新执行该指令)。

D 项错误。 操作系统通常提供统一的陷入指令作为系统调用的总入口。区分不同系统调用靠的是存放在寄存器中的系统调用号,而不是靠不同的陷入指令。

原页版面片段(用于核对图表、矩阵或代码)

第1章 Q33 原页片段

返回题目

审计旁注(非原文):改解析

陷入指令通常由用户态程序执行,但并非只能在用户态执行。

Q34

速对表原值: A

详细解析标注: A

系统调用需要在传递参数后执行陷入指令进入内核态,所以传递系统调用参数发生在用户态,其它选项都是具体的系统调用处理过程,所以发生在内核态。

返回题目

Q35

速对表原值: C

详细解析标注: C

A:修改界限地址寄存器为特权指令,需要在内核态下执行;B:设置定时器初值属于时钟管理的内容,需在内核态下运行;C:访管指令是用户态到内核态的入口,可以在用户态下运行;关闭D:中断允许位属于中断机制,它只能运行在内核态下。故答案为选项 C。

返回题目

Q36

速对表原值: C

详细解析标注: C

A 正确:封装函数有一个统一结构:先用若干条传送指令(mov)把参数和系统调用号送入指定的通用寄存器,紧跟上一条陷阱指令(如 int $0x80)陷入内核。

B 正确:系统调用为了提高效率,通过寄存器传递参数(如 EAX 放调用号,EBX、ECX 等放参数),这与普通过程调用(CALL 指令)默认用栈传参的机制不同。

C 错误(考点核心):硬件查表阶段:所有的系统调用在执行陷阱指令时,向硬件提供的都是同一个中断类型号(如 X86 中的 0x80)。硬件(CPU)根据这个统一的类型号,去检索中断向量表,跳转到操作系统内核的统一入口——即系统调用处理程序 system_call 的首地址。软件查表阶段:进入内核态并执行 system_call 后,操作系统内核(软件)才会读取寄存器(如 EAX)中的系统调用号,并以此为索引去检索系统调用表(跳转表),最终跳转到具体的内核服务例程(如 sys_write)。结论:硬件并不会直接用系统调用号去查中断向量表,两者的映射级数和查表主体不同。

D 正确:陷入指令的执行会触发软中断,硬件响应中断后,PC 会被赋值为中断向量表里 0x80 号表项对应的地址,即系统调用处理程序 system_call 的第一条指令

返回题目

Q37

速对表原值: D

详细解析标注: D

动态重定位是在作业运行到一条访存指令时再把逻辑地址转换为主存中的物理地址,实际是通过硬件地址转换机制实现的,故答案为选项 D。

返回题目

Q38

速对表原值: B

详细解析标注: B

静态重定位下,程序被装入程序装入时即会实现逻辑地址向物理地址的转换,此后程序中的指令和数据的内存地址便完全确定了,因此是由装入程序完成的地址转换。

返回题目

Q39

速对表原值: C

详细解析标注: C

C 选项准确地概括了微内核架构的核心设计思想。通过将文件系统、设备驱动等非核心服务移出内核,运行在用户态的独立进程中,微内核实现了服务间的良好隔离。这意味着即使某个服务进程崩溃,也不会导致整个操作系统宕机,从而极大地提升了系统的可靠性 。这正是微内核相对于宏内核的主要优势之一,也是其设计的根本出发点 。

A 项错误:此说法颠倒了分层结构的依赖关系。在分层结构中,第 i 层只能使用第 i-1 层提供的服务,而不能直接调用更低层的服务,也不能被更高层直接调用 。每一层都是其下一层的服务使用者,同时也是其上一层的服务提供者。因此,A 项的描述是错误的。

B 项错误:此说法混淆了模块化结构与宏内核结构的特点。模块化结构确实将操作系统视为一个整体,但其精髓在于将这个整体分解为可独立加载的模块 。这些模块可以位于内核空间,也可以以某种形式在用户空间运行,其核心优势在于灵活性和可维护性,而非单纯为了追求执行效率 。宏内核之所以效率高,是因为其所有组件都在同一个地址空间,通过函数调用通信 。模块化结构并不必然保证最高的执行效率。

D 项错误:此说法完全误解了外核的定义。外核的设计哲学恰恰相反,它不向应用提供高级抽象接口,而是将硬件资源(如内存页、磁盘块)的管理权部分或全部交还给应用程序 。应用程序需要自己编写代码来管理这些底层资源,实现所需的抽象(即所谓的“库操作系统”)。这样做是为了消除中间抽象层带来的性能开销,并赋予应用最大程度的控制权。因此,D 项的说法是错误的。

返回题目

Q40

速对表原值: C

详细解析标注: C

C 错误,每个层次只可以调用更低层次的功能和服务。分层式结构操作系统,各层次相互独立,依赖性低,对某一层次的修改不会影响其他层次,但由于每一层都要对下层进行系统调用,增加了开销,造成系统效率较低,因此 A、B、D 选项正确。

返回题目

Q41

速对表原值: A

详细解析标注: A

A 错误:“可靠性一定高于”表述绝对化。模块化结构虽通过模块隔离降低了部分耦合,但模块仍运行在内核空间,一个模块的错误仍可能破坏内核数据结构导致系统崩溃。其可靠性仅略优于传统宏内核,但远不及微内核,且“一定高于”不符合实际。

B 正确:宏内核和模块化结构都属于“大内核”范畴,核心服务(进程管理、内存管理、文件系统等)均运行在内核空间,这是它们与微内核的根本区别。

C 正确:模块化结构的核心优势之一是支持可加载内核模块,允许在系统运行时动态添加或移除功能,而传统宏内核所有功能必须在编译时静态链接,无法运行时动态调整。

D 正确:由于两者服务均在内核空间,服务间通信可通过直接的函数调用完成,无需跨地址空间的消息传递,因此性能较高。

返回题目

Q42

速对表原值: B

详细解析标注: B

A 错误,微内核架构下一些内核基础模块仍然运行在内核态。

B 正确,微内核不同模块运行在不同地址空间,不同模块间通信不能通过过程调用;宏内核不同模块运行在同一地址空间,不同模块间通信通过过程调用。

C 错误,微内核将机制与实现分离在不同特权级,所以切换更频繁。

D 错误,微内核设计安全性更强但是性能更差。主要是因为进程间通信(IPC)和频繁的用户态与内核态切换开销大

返回题目

Q43

速对表原值: C

详细解析标注: C

C 是微内核正确的描述。

A 错误,当前比较流行的、能支持多处理机运行的 OS,几乎全部都采用宏内核结构,包括Windows XP。

B 错误,模块化 OS 结构的原则是:分解和模块化。I 中描述的是分层式结构设计的基本原则。

D 错误,微内核结构将操作系统的很多服务移动到内核以外(如文件系统),且服务使用进程间的通信机制进行信息交换,这种通过进程间通信机制进行的信息交换影响了系统的效率,所以微内核结构设计并不会使系统更高效。一般来说,内核的内服务越少,内核越稳定。

返回题目

Q44

速对表原值: C

详细解析标注: C

在计算机系统中,操作系统通常存储在硬盘上,因为操作系统通常需要大量的存储空间,且需要频繁地修改和更新,因此不能将其存储在 ROM 或 EPROM 等只读存储器中。系统开机后,操作系统的程序会被自动加载到内存中的系统区,这段系统区域是 RAM,故选 C。

返回题目

Q45

速对表原值: A

详细解析标注: A

BIOS(Basic Input Output System,基本输入输出系统)是一组固化到计算机主板上一个 ROM 芯片上的程序,它保存着计算机中最重要的自诊断程序、CMOS 设置程序、基本输入输出程序、系统设置信息、开机加电自检程序和系统启动自举程序,其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。操作系统的引导分两步:主引导扇区位 MBR 于硬盘的 0 磁道 0 柱面 1 扇区,共 512bytes,由三大部分组成:

①硬盘主引导记录 MBR(Master Boot Record)占 446bytes

②分区表 DPT(Disk Partition Table)占 64bytes

③硬盘有效标志(Magic Number)占 2bytes。分区引导记录 PBR(Partition Boot Record),也常被称为分区引导扇区(Partition Boot Sector)。在操作系统引导过程中,PBR 是存储在磁盘分区的第一个扇区中的数据结构,它包含了分区的引导程序代码和引导加载程序的相关信息。两个引导程序都在磁盘区域,一般来说,PBR是OS的实际引导程序,如果同时出现MBR和PBR,操作系统的引导程序位置应选 PBR。本题选 A。

返回题目

Q46

速对表原值: D

详细解析标注: D

A对,开机后系统首先在实地址模式下工作,BIOS程序首先检测显卡、键盘、内存等,并在主存的 00000H~003FFH 区域建立中断向量表,同时,在中断向量所指的主存区域建立相应的中断服务程序B对:此时操作系统还没加载,没有磁盘驱动。MBR中的磁盘引导程序只能调用固化在ROM中的BIOS 中断来读取硬盘后续扇区。C 对:操作系统内核接管系统后,会从实模式切换到保护模式,此时不再使用 BIOS 的中断向量表,而是建立中断描述符表(即保护模式下的中断向量表)。D 错:逻辑格式化的核心任务是创建文件系统结构(如写入超级块、i 节点表、空闲空间管理表等)。而“将操作系统内核映像文件复制到硬盘中”是操作系统安装阶段的任务。

返回题目

Q47

速对表原值: C

详细解析标注: C

A、B、D 都是 OS 内核在 RAM 中运行后(即初始化阶段)必须执行的操作(读入磁盘元数据到内存缓存、建表、挂载文件系统、拉起 init 进程)。

C 错误:划分扇区和建立 MBR 属于物理格式化和磁盘分区阶段的工作,这是在操作系统安装之前(甚至出厂时)就已经在磁盘硬件上完成的,绝不可能在 OS 内核启动后才去做。

返回题目

Q48

速对表原值: A

详细解析标注: A

  • 自检程序(POST):开机时BIOS固件执行,用于检测 CPU、内存、显卡、键盘等硬件是否正常

  • 引导装入程序(也叫主引导记录 MBR,在磁盘 0 磁道 0 盘面第 1 扇区):通电自检结束后,加载“实际的引导程序”到内存中,根据分区表加载活动分区,将控制权交给活动分区。

  • 引导程序(分区引导记录 PBR,活动分区的第一个扇区):寻找并激活分区根目录下用于引导操作系统的程序。

  • 加载操作系统。将操作系统加载进内存中执行。计算机加电启动过程为:自检程序→自举装入程序(引导装入程序)→引导程序→操作系统。本题选A。

返回题目

Q49

速对表原值: B

详细解析标注: B

A 错误,第一类 VMM 直接运行在物理硬件之上,它自身就是硬件资源的管理者。它上面运行的是客户机操作系统,并不依赖宿主操作系统。

B 正确,第一类 VMM 直接安装在硬件上,它本身就扮演着操作系统的角色,运行在最高特权级别,负责管理和分配硬件资源给上层的虚拟机。

C 错误,第二类 VMM 是作为应用程序运行在宿主操作系统之上的。 它不直接运行在硬件之上,而是通过宿主操作系统来间接访问和控制物理资源。

D 错误,通常情况下,第一类 VMM 的性能优于第二类 VMM。这是因为第一类 VMM 直接控制硬件,减少了宿主操作系统带来的开销和指令转换层次。 第二类 VMM 由于需要通过宿主操作系统间接访问硬件,会引入额外的性能损耗。

返回题目

Q50

速对表原值: D

详细解析标注: D

A 错误,在第一类虚拟机中,当虚拟机操作系统执行了一条 CPU 处于内核态才允许执行的指令时,会陷入 VMM。在支持虚拟化的 CPU 上,VMM 检查这条指令是由虚拟机中的操作系统执行的还是由用户程序执行的。如果是前者,VMM 将安排这条指令功能的正确执行。否则,VMM将模拟真实硬件面对用户态执行敏感指令时的行为。在过去不支持虚拟化的 CPU 上,真实硬件也不会直接执行虚拟机中的敏感指令,这些敏感指令被转为对 VMM 的调用,由 VMM 模拟这些指令的功能。而在支持虚拟化的 CPU 上,虚拟机管理程序检查这条指令是由虚拟机中的操作系统执行的还是由用户程序执行的。如果是前者,虚拟机管理程序将安排这条指令功能的正确执行。否则,虚拟机管理程序将模拟真实硬件面对用户态执行敏感指令时的行为。

B 错误,第二类 VMM 负责把虚拟机程序的虚拟地址转换为宿主操作系统中的虚拟地址(这个虚拟地址在虚拟机 os 看来是”物理地址“),再由宿主操作系统转换为物理地址。

C 错误,虽然第二类 VMM 本身是作为宿主操作系统上的一个应用程序启动和运行的,但为了实现对虚拟机的管理和模拟一些特权操作,它的部分组件或在某些时刻可能需要宿主操作系统的内核态服务或者以某种特权级别运行(例如,通过加载内核模块或利用宿主 OS 提供的 API)。它不像第一类VMM 那样完全取代操作系统而运行在最高特权级,但也不能说它完全运行在用户态而不涉及任何内核态的交互或依赖. 它的核心功能(如指令解释、设备模拟)大部分在用户态,但与硬件交互和资源管理离不开宿主 OS 内核的支持. D 正确,第一类 VMM,直接运行在物理硬件之上。这意味着它可以直接管理和分配真实的、未经过抽象的物理硬件资源给虚拟机. 第二类 VMM 作为应用程序运行在宿主操作系统之上. 它通过宿主操作系统来访问物理硬件,因此它分配给虚拟机的硬件资源通常是经过宿主操作系统抽象和管理的“虚拟”或“抽象化”的物理硬件。

返回题目

审计旁注(非原文):口径风险

解析混入真实虚拟化实现;408 默认按王道简化模型。

Q51

速对表原值: D

详细解析标注: D

第一类虚拟机没有宿主操作系统,硬件资源的管理者是虚拟机管理程序(VMM),I 错误;第二类虚拟机管理程序负责把虚拟机程序的虚拟地址转换为宿主操作系统中的虚拟地址(这个虚拟地址在虚拟机os看来是”物理地址“),再由宿主操作系统转换为物理地址,II错误;第一类虚拟机的非敏感指令执行在 ring1 层,而敏感指令执行在 ring0 层(内核态)。理想情况下,我们希望敏感指令集等于特权指令集,对于一般 RISC 处理器,如 MIPS,PowerPC 以及 SPARC,敏感指令就是特权指令,但是x86 例外,但是 x86 绝大多数的敏感指令是特权指令,但是由部分敏感指令不是特权指令,执行这些指令的时候不会自动 trap,而是被 VMM 捕获。几乎所有现代 CPU 都支持硬件虚拟化,这些不会 trap 的敏感指令,是通过允许 VMM 捕获并仿真敏感指令来实现的,可以在用户态执行,III 正确。

返回题目

Q52

速对表原值: A

详细解析标注: A

A 错误:这是微内核与外核最容易混淆的地方。微内核确实将文件系统等作为独立的用户态服务器进程运行;但在外核架构中,文件系统等功能是由应用程序链接的“库操作系统(LibOS)”提供的,LibOS 与应用程序运行在同一个进程的地址空间内,而不是作为“独立的用户态服务器进程”运行。因此 A 的说法错误。

B 正确:微内核架构中,各个功能模块(如文件系统、网络)是相互独立的用户态进程,必须依赖内核提供的进程间通信(IPC)机制来交换数据;而外核的设计哲学是“消除抽象”,它只负责分配物理资源(如物理内存页、磁盘块),不提供虚拟内存、文件系统等高级硬件抽象,这些抽象由应用层的“库操作系统(LibOS)”来实现。

C 正确:微内核将非核心服务移出内核态,使得某个服务崩溃不会导致整个系统宕机,从而提高了系统的可靠性;外核(Exokernel)顾名思义,其核心职责就是作为硬件资源的保护者,确保多个应用程序能够安全地复用底层物理资源,而不干涉应用如何使用这些资源。

D 正确:微内核最大的缺点是性能较差,因为每次服务调用都需要经过 IPC 机制,伴随着频繁的用户态与内核态上下文切换;外核将物理资源的管理权下放给应用程序,应用可以直接访问和管理硬件,彻底避免了微内核中沉重的 IPC 和上下文切换开销,因此执行效率通常更高。

返回题目

编辑补号(非原文)

原解析页漏印“52.”,这里依据上一题结束位置、章节连续题号和速对答案补为 Q52=A。