操作系统的概述之三

1 下列选项中,在用户态执行的是 ( )。

A. 命令解释程序

B. 缺页处理程序

C. 进程调度程序

D. 时钟中断处理程序

解析:

操作系统中的程序执行状态通常分为用户态(User Mode)和核心态(Kernel Mode)。核心态拥有访问所有硬件和内存的最高权限,主要运行操作系统内核代码。用户态权限受限,主要运行应用程序。

  • A. 命令解释程序: 如 Shell 或 cmd.exe,它是一个应用程序,负责接收和解释用户输入的命令。它本身运行在用户态。当它需要执行需要特权的操作时(如创建进程),会通过系统调用陷入核心态。

  • B. 缺页处理程序: 当用户程序访问的页面不在内存时,会产生一个缺页异常(中断)。CPU会立即从用户态切换到核心态,转而去执行操作系统的缺页处理程序,以从磁盘调入相应页面。因此,缺页处理程序在核心态执行。

  • C. 进程调度程序: 这是操作系统内核的核心组件,负责决定哪个进程将获得CPU的使用权。它需要修改进程控制块等内核数据结构,必须在核心态执行。

  • D. 时钟中断处理程序: 时钟中断是硬件中断,用于计时和触发进程调度等。中断发生后,CPU会立即切换到核心态来执行对应的中断处理程序。因此,时钟中断处理程序在核心态执行。

综上所述,只有命令解释程序是运行在用户态的。


2 下列选项中,不可能在用户态发生的事件是 ( )。

A. 系统调用

B. 外部中断

C. 进程切换

D. 缺页

解析:

本题询问哪个事件本身不是在用户态发生的。我们需要区分事件的“触发”和“处理”。事件的触发可能在用户态,但其处理程序通常在核心态执行。

  • A. 系统调用: 用户程序在用户态下执行时,通过一条特殊的指令(如 trapsyscall)主动请求操作系统服务,从而引发从用户态到核心态的转换。事件的“起因”发生在用户态。

  • B. 外部中断: 也称硬件中断,例如 I/O 操作完成或时钟中断。当用户程序在用户态下执行时,这些来自外部设备的中断信号可以随时发生,中断当前的用户态执行,并强制CPU转入核心态去处理中断。因此,中断事件可以发生在用户程序执行期间(即用户态下)。

  • C. 进程切换: 进程切换是操作系统内核的一项功能,它负责保存当前进程的上下文,并加载另一个进程的上下文。这个过程完全由操作系统在核心态完成,它是由调度程序执行的。用户程序不能在用户态下执行进程切换操作。虽然触发进程切换的事件(如时钟中断或系统调用)可能在用户态时发生,但“进程切换”这个行为本身是在核心态中进行的。

  • D. 缺页: 当用户程序在用户态下执行一条指令,试图访问一个不在物理内存中的页面时,会立即触发一个缺页异常。这个异常发生在用户态,并导致CPU切换到核心态去执行缺页处理程序。

因此,“进程切换”这个操作本身是在核心态完成的,不可能在用户态发生。

好的,我们按照新的格式重新组织一下。


3.【2012 统考真题】 中断处理和子程序调用都需要压栈,以便保护现场。中断处理一定会保存而子程序调用不需要保存其内容的是()。

A. 程序计数器

B. 程序状态字寄存器

C. 通用数据寄存器

D. 通用地址寄存器

解析:

本题旨在区分中断和子程序调用在保存现场时的关键不同点。

  • 子程序调用(Function/Subroutine Call): 通常在同一进程和同一特权级别(用户态)内发生。其主要目的是返回到调用指令的下一条指令继续执行。因此,程序计数器(PC) 的值(即返回地址)必须被保存。其他通用寄存器的保存则根据编译器和调用约定(caller-saved vs. callee-saved)来决定,不是必须全部保存。关键在于,子程序调用不涉及特权等级的改变,因此通常不需要保存和改变程序状态字(PSW) 中与特权状态相关的部分。

  • 中断处理(Interrupt Handling): 中断是来自硬件或异常事件的异步请求,它会打断当前进程的执行。中断发生后,CPU会从用户态强制切换到内核态。为了在中断处理完毕后能够精确地恢复到被中断前的状态,操作系统必须保存完整的现场。这不仅包括程序计数器(PC),还必须包括程序状态字寄存器(PSW)。PSW中包含了CPU当前的工作模式(用户态/内核态)、条件码(如零标志、溢出标志)等关键状态信息。中断处理一定会改变CPU的工作模式,因此必须保存旧的PSW并在进入中断服务程序时设置新的PSW,在返回时再恢复原有的PSW。

结论: 程序状态字寄存器(PSW)是中断处理时必须保存,而子程序调用时通常不需要保存的核心部件。故选B。


4.【2013 统考真题】 下列选项中,会导致用户进程从用户态切换到内核态的操作是()。

I. 整数除以零

II. sin()函数调用

III. read 系统调用

A. 仅 I、II

B. 仅 I、III

C. 仅 II、III

D. I、II 和 III

解析:

本题考查从用户态转换到内核态的途径。这种转换通常由三类事件引起:系统调用、异常和外部中断。

  • I. 整数除以零: 这是一个在程序执行期间由CPU检测到的错误,属于异常(Exception)陷入(Trap)。当CPU试图执行此非法操作时,它会中止当前指令,并将控制权转移给操作系统内核中的特定异常处理程序。这个过程伴随着从用户态到内核态的切换。因此,I 会导致模式切换。

  • II. sin()函数调用: sin() 是一个标准的数学库函数。调用库函数是在用户空间内完成的,它只是一个普通的函数调用,控制流从一个用户态地址跳转到另一个用户态地址(库函数的代码区)。这个过程不涉及操作系统内核的介入,也不会发生特权级别的改变。因此,II 不会导致模式切换。

  • III. read 系统调用: read 是一个典型的系统调用(System Call)。用户程序通过它请求操作系统提供I/O服务(如读取文件)。由于I/O设备是受内核管理的特权资源,用户程序不能直接访问。因此,执行read系统调用会通过一个特殊的陷入指令(如 syscall)使CPU从用户态切换到内核态,由内核代为完成读操作。因此,III 会导致模式切换。

结论: 整数除以零(异常)和read系统调用会导致进程从用户态切换到内核态。故选B。

5.下列指令中,不能在用户态执行的是( )。 A. trap指令 B. 跳转指令 C. 压栈指令 D. 关中断指令

关中断指令是特权指令,只能在内核态(管态)执行,不能在用户态执行。

  • trap指令:用于产生软中断,用户程序可以执行来请求系统服务
  • 跳转指令:普通的程序控制指令,用户态可以执行
  • 压栈指令:普通的数据操作指令,用户态可以执行
  • 关中断指令:特权指令,涉及系统安全和稳定性,只能在内核态执行

用户态程序如果能随意关闭中断,会严重影响系统的正常运行

6.处理外部中断时,应该由操作系统保存的是( )。 A. 程序计数器(PC)的内容 B. 通用寄存器的内容 C. 快表(TLB)中的内容 D. Cache中的内容

    处理外部中断时,需要保存被中断程序的现场信息

  • A. 程序计数器(PC)的内容:PC保存下一条要执行指令的地址,中断发生时硬件会自动将PC压入堆栈或保存到特定寄存器中,这是硬件自动完成的,不是操作系统主动保存的。
  • B. 通用寄存器的内容:这些是被中断程序正在使用的寄存器,包含程序的运算数据和中间结果。操作系统的中断处理程序需要主动保存这些寄存器内容,以便中断处理完成后能够恢复被中断程序的执行状态。
  • C. 快表(TLB)中的内容:TLB是硬件管理的,不需要操作系统显式保存。
  • D. Cache中的内容:Cache也是硬件管理的,操作系统不需要主动保存。

修正答案:B. 通用寄存器的内容

PC的保存通常是硬件自动完成的(通过中断向量机制),而通用寄存器的内容需要操作系统的中断处理程序主动保存到PCB或堆栈中,这样才能在中断处理完成后正确恢复被中断程序的状态

7. 【2015 统考真题】假定下列指令已装入指令寄存器,则执行时不可能导致 CPU 从用户态变为内核态(系统态)的是( )。

A. DIV R0, R1    ; (R0)/(R1)→R0  
B. INT n    ; 产生软中断  
C. NOT R0    ; 寄存器 R0 的内容取非  
D. MOV R0, addr    ; 把地址 addr 处的内存数据放入寄存器 R0  

答案:C

解析:
- NOT R0指令是简单的逻辑非操作,不会产生任何异常或中断,因此不会导致CPU从用户态切换到内核态。
- 其他选项:DIV可能触发除零异常,INT是显式软中断指令,MOV访存可能触发缺页异常,这些都会导致态切换。

8. 【2016 统考真题】异常是指令执行过程中在处理器内部发生的特殊事件,中断是来自处理器外部的请求事件。下列关于中断或异常情况的叙述中,错误的是( )。

A. "访存时缺页"属于中断  
B. "整数除以 0"属于异常  
C. "DMA 传送结束"属于中断  
D. "存储保护错"属于异常  

答案:A

解析:
- "访存时缺页"是由CPU内部指令执行引发的异常事件,属于异常而非中断,因此A选项错误。
- 其他选项分类正确:"整数除以0"是运算异常,"DMA传送结束"是外部设备中断,"存储保护错"是内存访问异常。

9(原24题)
24. 执行系统调用的过程包括如下主要操作:
①返回用户态 ②执行陷入(trap)指令 ③传递系统调用参数 ④执行相应的服务程序
正确的执行顺序是( )。
A. ②→③→①→④  B. ②→④→③→①
C. ③→②→④→①  D. ③→④→②→①

答案:C

解析:系统调用执行流程:首先③传递系统调用参数,明确要系统完成的任务;接着②执行陷入(trap)指令,从用户态陷入内核态;进入内核态后④执行相应的服务程序,完成系统调用功能;最后①返回用户态。所以顺序是③→②→④→①,选C。

  • Trap 指令(也称为 陷入指令 或 软中断指令)是 CPU 提供的一种特殊指令,用于 从用户态(User Mode)主动切换到内核态(Kernel Mode),以便操作系统内核执行特权操作(如系统调用、异常处理等)。

题目10(原25题)
25. 定时器产生时钟中断后,由时钟中断服务程序更新的部分内容是( )。
I. 内核中时钟变量的值  

II. 当前进程占用CPU的时间

 III. 当前进程在时间片内的剩余执行时间
A. 仅I、II  B. 仅II、III  C. 仅I、III  D. I、II、III

答案:D

解析:时钟中断发生后:
- I:内核需更新时钟变量,记录系统时间推进,正确;
- II:要统计当前进程占用CPU的时长,更新其CPU使用时间,正确;
- III:若当前进程用时间片调度,需更新其在时间片内剩余执行时间(比如时间片减1),正确。
所以I、II、III都会更新,选D。

11. 下列关于系统调用的叙述中,正确的是( )。

I. 在执行系统调用服务程序的过程中,CPU处于内核态
II. 操作系统通过提供系统调用避免用户程序直接访问外设
III. 不同的操作系统为应用程序提供了统一的系统调用接口
IV. 系统调用是操作系统内核为应用程序提供服务的接口

A. 仅 I、IV    B. 仅 II、III    C. 仅 I、II、IV    D. 仅 I、III、IV

答案:C

解析:
- I:正确。执行系统调用服务程序时,CPU必须处于内核态,因为涉及特权操作(如硬件访问)。
- II:正确。系统调用的核心目的之一是屏蔽用户程序直接操作外设,由内核统一管理以保证安全。
- III:错误。不同操作系统的系统调用接口(如Linux的int 0x80和Windows的API)并不统一。
- IV:正确。系统调用是内核为应用程序提供的服务接口(如read()、write())。

综上,I、II、IV正确,选 C。


12. 下列与中断相关的操作中,由操作系统完成的是( )。

I. 保存被中断程序的中断点
II. 提供中断服务
III. 初始化中断向量表
IV. 保存中断屏蔽字

A. 仅 I、II    B. 仅 I、II、IV    C. 仅 III、IV    D. 仅 II、III、IV

答案:D

解析:
- I:错误。中断点的保存由硬件自动完成(如压栈PC和寄存器状态)。
- II:正确。中断服务程序(如时钟中断处理)由操作系统提供。
- III:正确。中断向量表的初始化是操作系统启动时的职责(如设置中断处理函数入口)。
- IV:正确。操作系统需保存和恢复中断屏蔽字以控制中断嵌套。

综上,II、III、IV由操作系统完成,选 D。

13. 下列关于系统调用的叙述中,正确的是()。

I. 在执行系统调用服务程序的过程中,CPU处于内核态

II. 操作系统通过提供系统调用避免用户程序直接访问外设

III. 不同的操作系统为应用程序提供了统一的系统调用接口

IV. 系统调用是操作系统内核为应用程序提供服务的接口

A. 仅I、IV

B. 仅II、III

C. 仅I、II、IV

D. 仅I、II、III、IV

答案:C

解析:

  • I. 正确。 系统调用是用户程序请求操作系统服务的唯一方式。当发生系统调用时,CPU会从用户态(User Mode)切换到内核态(Kernel Mode),以便执行操作系统的内核代码来响应该请求。

  • II. 正确。 为了保护系统资源和硬件,操作系统不允许用户程序直接访问外部设备(如磁盘、打印机等)。用户程序必须通过系统调用向操作系统提出请求,由操作系统内核来完成实际的硬件操作,这是操作系统提供的保护机制。

  • III. 错误。 不同的操作系统(如 Windows, Linux, macOS)有各自不同的系统调用接口。虽然有些标准(如 POSIX)试图提供跨平台的应用程序编程接口(API),但底层的系统调用实现是不同的。因此,为一个操作系统编译的程序通常不能在另一个操作系统上直接运行。

  • IV. 正确。 这是系统调用的基本定义。它扮演着应用程序和操作系统内核之间的桥梁,是应用程序访问内核所提供服务的接口。

综上所述,正确的叙述是 I、II 和 IV。

14. 下列与中断相关的操作中,由操作系统完成的是()。

I. 保存被中断程序的中断点

II. 提供中断服务

III. 初始化中断向量表

IV. 保存中断屏蔽字

A. 仅I、II

B. 仅I、II、IV

C. 仅III、IV

D. 仅II、III、IV

答案:D

解析:

中断处理过程是由硬件和软件(操作系统)协同完成的。

  • I. 错误。 保存被中断程序的“中断点”(即程序计数器PC的值)是由 硬件 自动完成的。当中断信号被CPU检测到时,CPU的硬件逻辑会立即将当前的PC和程序状态字(PSW)等信息压入堆栈,这个过程被称为“中断隐指令”,不属于操作系统的功能。

  • II. 正确。 中断服务程序(Interrupt Service Routine, ISR)是操作系统的一部分。当中断发生,硬件跳转到对应的中断服务程序后,由操作系统接管,为产生中断的事件提供相应的处理服务。

  • III. 正确。 中断向量表(Interrupt Vector Table)存储了不同中断号对应的中断服务程序的入口地址。这张表必须在系统启动时由 操作系统 进行初始化,以“告知”硬件在收到特定中断时应该跳转到哪里去执行。

  • IV. 正确。 中断屏蔽字是程序状态字(PSW)的一部分,用于指示CPU可以响应哪些中断。虽然硬件在中断发生时会自动保存PSW(其中包含了中断屏蔽字),但在进入中断服务程序后,为了保护现场和进行进程切换,操作系统 需要负责保存和恢复包括通用寄存器、中断屏蔽字在内的完整上下文信息。因此,保存中断屏蔽字(作为进程上下文的一部分)被认为是操作系统的任务。

好的,这是后续题目的解答与解析。

15. 下列指令中,只能在内核态执行的是()。

A. trap指令

B. I/O指令

C. 数据传送指令

D. 设置断点指令

答案:B

解析:

  • A. trap指令: trap(陷入)指令是用户程序主动请求操作系统服务的指令,它本身是在 用户态 执行的,其作用就是引发一个从用户态到内核态的转换。

  • B. I/O指令: I/O指令(如 IN, OUT)用于与硬件设备直接通信。这类指令如果允许用户程序随意执行,会破坏系统的安全和稳定。因此,I/O指令被划为 特权指令,只能在 内核态 由操作系统执行。

  • C. 数据传送指令:MOV 等用于在寄存器和内存之间移动数据的指令,是程序运行所必需的基本指令,属于非特权指令,在用户态和内核态下均可执行。

  • D. 设置断点指令: 设置断点通常是为了调试程序,它一般通过特定的 trap 指令实现,是在用户态下发起的。

因此,只有I/O指令是只能在内核态执行的特权指令。

16. 下列选项中,通过系统调用完成的操作是()。

A. 页置换

B. 进程调度

C. 创建新进程

D. 生成随机数

答案:C

解析:

系统调用是应用程序主动向操作系统请求服务的接口。

  • A. 页置换: 页置换是在发生缺页中断时,由操作系统在内存不足的情况下自动完成的内存管理功能。这个过程对用户程序是透明的,不是由用户程序通过系统调用主动请求的。

  • B. 进程调度: 进程调度是操作系统的核心功能,由调度算法根据系统的状态(如时间片用完、进程阻塞等)自动触发执行,用于决定下一个要运行的进程。它不是一个能由用户程序直接调用的操作。

  • C. 创建新进程: 创建一个新进程(如Linux中的 fork()、Windows中的 CreateProcess())是操作系统提供给用户程序的一项核心服务,必须通过 系统调用 来完成。

  • D. 生成随机数: 生成随机数通常是由编程语言的库函数(如C语言的 rand())提供的。这些库函数可能完全在用户空间通过算法实现(伪随机数),或者在需要高质量随机性时,通过系统调用从操作系统获取熵(如读取 /dev/random)。但与创建进程相比,创建进程 必然 是一个系统调用,而生成随机数则不一定,所以C是最佳答案。

17. 下列关于CPU模式的叙述中,正确的是()。

A. CPU处于用户态时只能执行特权指令

B. CPU处于内核态时只能执行特权指令

C. CPU处于用户态时只能执行非特权指令

D. CPU处于内核态时只能执行非特权指令

答案:C

解析:

  • A. 错误。 CPU处于用户态时 不能 执行特权指令,否则会引发异常。

  • B. 错误。 CPU处于内核态时,可以执行 所有 指令,包括特权指令和非特权指令。操作系统内核本身也需要执行大量的算术、逻辑、数据传送等非特权指令。

  • C. 正确。 用户态(User Mode)是一个受限制的执行模式,为了保护操作系统和硬件,该模式下运行的程序只能执行非特权指令。

  • D. 错误。 CPU处于内核态的主要目的就是为了能够执行特权指令,以管理系统关键资源。

18. 执行系统调用的过程涉及下列操作,其中由操作系统完成的是()。

I. 保存断点和程序状态字

II. 保存通用寄存器的内容

III. 执行系统调用服务例程

IV. 将CPU模式改为内核态

A. 仅I、III

B. 仅II、III

C. 仅II、IV

D. 仅II、III、IV

答案:B

解析:

系统调用的执行过程同样是硬件和软件(操作系统)协同完成的。

  • I. 错误。 这是由 硬件 完成的。当用户程序执行 trapsyscall 指令时,CPU硬件会自动保存当前的程序计数器(断点)和程序状态字(PSW),这是陷入(trap)机制的一部分。

  • II. 正确。 在进入内核后,为了保证系统调用返回时用户程序能正确恢复执行,操作系统 必须负责保存用户程序执行时的通用寄存器内容。这属于保护和恢复现场的一部分。

  • III. 正确。 系统调用服务例程就是操作系统为该系统调用编写的具体功能代码,它理所当然地由 操作系统 执行。

  • IV. 错误。 将CPU模式从用户态改为内核态,这个操作也是在CPU执行 trap 指令时由 硬件 自动完成的。操作系统代码开始执行时,CPU 已经 处于内核态了。

因此,由操作系统完成的操作是 II 和 III。

好的,这是后续题目的解答与解析。

19. 在操作系统内核中,中断向量表适合采用的数据结构是()。

A. 数组

B. 队列

C. 单向链表

D. 双向链表

答案:A

解析:

中断向量表(Interrupt Vector Table)的功能是映射中断号和中断服务程序的入口地址。当一个中断发生时,CPU需要根据中断号快速、直接地找到对应的处理程序。

  • A. 数组: 数组是实现这种快速查找的最理想数据结构。中断号可以作为数组的下标(索引),通过 基地址 + 中断号 × 表项大小 的方式直接计算出中断服务程序地址在内存中的位置,时间复杂度为 O(1)

  • B. 队列: 队列是先进先出的数据结构,用于需要按顺序处理的场景,不适用于根据中断号进行随机访问。

  • C/D. 链表: 无论是单向链表还是双向链表,查找特定元素都需要从头开始遍历,时间复杂度为 O(n),对于要求高实时性的中断处理来说,效率太低。

因此,中断向量表最适合采用的数据结构是数组。

20. 下列关于中断、异常和系统调用的叙述中,错误的是()。

A. 中断或异常发生时,CPU处于内核态

B. 每个系统调用都有对应的内核服务例程

C. 中断处理程序开始执行时,CPU处于内核态

D. 系统添加新类型设备时,需要注册相应的中断服务例程

答案:A

解析:

本题要求选出 错误 的叙述。

  • A. 错误。 这是本题的正确答案。中断(如I/O完成)、异常(如除零错误、缺页)和系统调用都可能在CPU处于 用户态 时发生。这些事件的发生会 导致 CPU从用户态切换到内核态,以便操作系统进行处理。叙述中称事件“发生时”CPU就处于内核态是错误的,正确的说法是事件的发生是“进入”内核态的原因。

  • B. 正确。 系统调用是应用程序请求内核服务的接口。对于每一个合法的系统调用号,操作系统内核中都有一个对应的服务例程(函数)来执行具体的功能。

  • C. 正确。 当中断或异常发生后,CPU硬件会完成模式切换(从用户态到内核态)并跳转到中断处理程序的入口地址。因此,当中断处理程序(即中断服务例程)的代码 开始执行时,CPU必然已经处于内核态。

  • D. 正确。 这是设备驱动工作的基本原理。当安装一个新的设备驱动程序时(例如插入一个U盘),驱动程序会向操作系统内核 注册 自己的中断服务例程,并将其与设备所使用的中断号关联起来。这样,当设备产生中断时,操作系统就知道该调用哪个程序来处理了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值