🏷️ 知识点:用户态和内核态
在操作系统中,有些指令只能在系统的内核态下运行,而不允许普通用户程序使用。下列操作中,可以运行在用户态下的是( )。
A. 设置定时器的初值 B. 触发 Trap 指令 C. 内存单元复位 D. 关闭中断允许位
[tag_link]
正确答案:B
在操作系统中,用户态和内核态是两种不同的运行模式。
用户态下程序权限较低,只能执行非特权指令; 内核态下操作系统内核可以执行所有指令,包括特权指令,以管理硬件和系统资源。
选项A“设置定时器的初值”通常涉及硬件定时器的直接配置,这属于特权操作,必须在内核态下执行,用户程序只能通过系统调用间接请求内核完成。
选项B“触发Trap指令”是用户程序主动从用户态切换到内核态的一种机制,例如执行系统调用或处理异常。 Trap指令本身可以在用户态下触发,从而引发陷入内核的处理过程。
选项C“内存单元复位”可能指对物理内存单元的清除或重置操作,这需要直接访问系统内存资源,用户态程序无权执行,必须由内核态代码处理。
选项D“关闭中断允许位”涉及修改CPU的中断标志,这是关键的系统控制操作,允许中断是保证系统响应性和多任务的基础,因此关闭中断必须是内核态特权指令。
综上,只有触发Trap指令可以在用户态下运行,其他选项都需要内核态权限。
在操作系统中,以下只能在核心态下处理执行的指令是( )。
A. 读时钟 B. 寄存器清零 C. 系统调用 D. 取数
[tag_link]
正确答案:C
在操作系统中,核心态(也称为内核态或特权态)与用户态是处理器的两种运行模式。 核心态下可以执行所有指令,包括特权指令,而用户态下只能执行非特权指令,以防止用户程序直接访问系统资源或影响系统安全。
选项分析如下:
A. 读时钟:读取时钟值通常不是特权指令,用户程序可以通过非特权指令或系统调用来获取时间信息,因此可以在用户态下执行。 >
B. 寄存器清零:清零通用寄存器(如数据寄存器)是常见的非特权指令,用户程序可以自由操作自己的寄存器,无需切换到核心态。 >
C. 系统调用:系统调用是用户程序主动请求操作系统服务的机制。 > 当执行系统调用指令(如陷阱指令)时,会触发处理器从用户态切换到核心态,由操作系统内核在核心态下处理该请求。 > 因此,系统调用的处理过程只能在核心态下执行。 >
D. 取数:取数指令(如从内存加载数据)通常是非特权指令,用户程序在用户态下可以访问自己的内存空间。 > 只有访问受保护的系统内存或执行特权操作时才需核心态。 >
综上,只有系统调用的处理必须在核心态下完成,故正确答案为C。 >
下列选项中,不可能在用户态发生的事件是( )。
A. 系统调用
B. 外部中断
C. 进程切换
D. 缺页
[tag_link]
正确答案:C
本题关键是对 “在用户态 发生”(与上题的 “执行” 区分)的理解。对于 A,系统调用是操作系统提供给用户程序的接口,系统调用发生在用户态,被调用程序在核心态下执行。对于 B,外部中断是用户态到核心态的 “门”,也发生在用户态,在核心态完成中断过程。对于 C,进程切换属于系统调用执行过程中的事件,只能发生在核心态。对于 D,缺页产生后,在用户态发生缺页中断,然后进入核心态执行缺页中断服务程序。
下列指令中,只能在内核态执行的是( )。
A. trap 指令 B. I/O 指令 C. 数据传送指令 D. 设置断点指令
[tag_link]
正确答案:B
在 内核态 下,CPU 可执行任何指令,在用户态下 CPU 只能执行非特权指令,而特权指令只能在内核态下执行。常见的 特权指令 有:
- 有关对 IO 设备操作的指令;
- 有关访问程序状态的指令;
- 存取特殊寄存器指令;
- 其他指令。A、C 和 D 都是提供给用户使用的指令,可以在用户态执行,只是可能会使 CPU 从用户态切换到内核态。
下列选项中,在用户态执行的是( )。
A. 命令解释程序
B. 缺页处理程序
C. 进程调度程序
D. 时钟中断处理程序
[tag_link]
正确答案:A
缺页处理和时钟中断都属于中断,在 内核态 执行;进程调度是操作系统内核进程,无须用户干预,在核心态执行;命令解释程序属于命令接口,是四个选项中唯一能面对用户的,它在 用户态 执行。
假定下列指令已装入指令寄存器,则执行时不可能导致 CPU 从用户态变为内核态(系统态)的是( )。
A. DIV R0, R1; (R0)/(R1)→R0
B. INT n; 产生软中断
C. NOT R0; 寄存器 R0 的内容取非
D. MOV R0, addr; 把地址 addr 的内存数据放入寄存器 R0 中
[tag_link] 正确答案:C考虑到部分指令可能出现异常(导致中断),从而转到 内核模式 。指令 A 有除零异常的可能,指令 B 为中断指令,指令 D 有缺页异常的可能,指令 C 不会发生异常。
下列指令中,不能在用户态执行的是()。
A.trap 指令
B. 跳转指令
C. 压栈指令
D. 关中断指令
[tag_link]
正确答案:D
trap 指令 、跳转指令和压栈指令均可以在用户态执行,其中 trap 指令负责由用户态转换成为内核态,而关中断指令为特权指令,必须在核心态才能执行,选 D。
下列关于系统调用的叙述中,正确的是( )。
Ⅰ.在执行系统调用服务程序的过程中,CPU 处于内核态
Ⅱ.操作系统通过提供系统调用避免用户程序直接访问外设
Ⅲ.不同的操作系统为应用程序提供了统一的系统调用接口
Ⅳ.系统调用是操作系统内核为应用程序提供服务的接口
A. 仅Ⅰ、Ⅳ B. 仅Ⅱ、Ⅲ C. 仅Ⅰ、Ⅱ、Ⅳ D. Ⅰ、Ⅲ、Ⅳ
[tag_link]
正确答案:C
用户可以在用户态调用操作系统的服务,但执行具体的系统调用服务程序是处于内核态的,Ⅰ正确:设备管理属于操作系统的职能之一,包括对输入/输出设备的分配、初始化、维护等,用户程序需要通过系统调用使用操作系统的设备管理服务,Ⅱ正确:操作系统不同,底层逻辑、实现方式均不相同,为应用程序提供的系统调用接口也不同,Ⅲ错误:系统调用是用户在程序中调用操作系统提供的子功能,Ⅳ正确。
下列操作完成时,导致 CPU 从内核态转为用户态的是( )。
A. 阻塞过程 B. 执行 CPU 调度 C. 唤醒进程 D. 执行系统调用
[tag_link]
正确答案:D
来看每个选项的含义和状态切换:对于 A 选项,阻塞过程属于进程状态切换,不直接涉及CPU模式转换。对于 B 选项,执行 CPU 调度属于内核调度器行为,通常保持在内核态。对于 C 选项,唤醒进程属于进程管理操作,不直接触发模式切换对于 D 选项,当用户程序需要访问特权指令或执行需要操作系统提供的服务时,它会通过 系统调用 请求进人内核态。在系统调用期间,CPU 会切换到内核态执行相应的内核代码来满足用户程序的需求。一旦系统调用执行完毕,CPU 会从内核态返回到用户态继续执行用户程序。所以,执行系统调用是导致 CPU 从内核态转为用户态的关键操作。所以该题的正确选项为 D 选项。
下列关于CPU 模式的叙述中,正确的是()。
A.CPU 处于用户态时只能执行特权指令
B.CPU 处于内核态时只能执行特权指令
C. CPU处于用户态时只能执行非特权指令 D.CPU 处于内核态时只能执行非特权指令
[tag_link]
正确答案:C
CPU 在 用户态 时只能执行非特权指令,在 内核态 时可以执行特权指令和非特权指令。
下列选项中,会导致用户进程从用户态切换到内核态的操作是( )。
I. 整数除以零
II. sin() 函数调用
III. read 系统调用
A.仅 I、II
B.仅 I、III
C.仅 II、III
D.I、II 和 III
[tag_link] 正确答案:B需要在系统 内核态 执行的操作是整数除零操作(需要中断处理)和 read 系统调用函数,sin() 函数调用是在用户态下进行的。
进程 P 通过执行系统调用从键盘接收一个字符的输入,已知此过程中与进程 P 相关的操作包括:①将进程 P 插入就绪队列;②将进程 P 插入阻塞队列;③将字符从键盘控制器读入系统缓冲区;④启动键盘中断处理程序;⑤进程 P 从系统调用返回;⑥用户在键盘上输入字符。以上编号①~⑥仅用于标记操作,与操作的先后顺序无关。请回答下列问题。
(1) 按照正确的操作顺序,操作①的前一个和后一个操作分别是上述操作中的哪一个?操作⑥的后一个操作上述操作中的哪一个?
(2) 在上述哪个操作之后 CPU 一定从进程 P 切换到其他进程?在上述哪个操作之后 CPU 调度程序才能选择进程 P 执行?
(3) 完成上述哪个操作的代码属于键盘驱动程序?
(4) 键盘中断处理程序执行时,进程 P 处于什么状态?CPU 处于内核态还是用户态?
[tag_link]
1)在操作①的前操作是③,后一个操作是⑤。操作⑥的后一个操作是④。
2)在操作②之后 CPU 一定从进程 P 切换到其他进程。在操作①之后 CPU 调度程序才能选中进程 P 执行。
3)完成操作③的代码属于键盘驱动程序。
4)进程 P 处于阻塞状态。CPU 处于内核态。