Skip to content

2023年 408 操作系统 第 26 题

操作系统2023年选择题2分

题目

下列操作完成时,导致 CPU 从内核态转为用户态的是( )。

错因

A

阻塞进程是内核内部的事务——把当前进程的 PCB 移入等待队列、改变状态,全程在内核态完成。完成后通常紧接着调用调度程序(B)选下一个进程,仍在内核态。它的"完成时"并不直接对应"切回用户态"——切不切回要看后续调度选了哪个进程。

B

执行 CPU 调度本身完全在内核态进行(选择下一个进程、保存当前 PCB、加载新 PCB)。调度结束可能切回用户态(如果选中的进程要在用户态运行),但也可能继续内核态(比如调度后还有别的内核工作)。把调度的"完成"等同于"必然切回用户态"是过度推断;题目问"导致 ... 转为用户态",应该是描述方向更明确的事件。

C

唤醒进程(V 操作或类似机制)的工作是把目标进程从等待队列移到就绪队列,并不立即切换 CPU 给它——只是改变了它的状态。被唤醒的进程不会马上跑(它还没轮到 CPU),而当前正在运行的内核代码继续执行。所以唤醒完成时 CPU 仍在内核态。

总解析

核心概念:什么操作的"完成"会直接对应"内核态 → 用户态"?

答:系统调用的返回——它是用户态触发系统调用进入内核态、内核完成服务后通过 iret(或 sysret)返回用户态的标准流程。系统调用整体过程:

用户态 → [int 0x80 / syscall] → 内核态 → [系统调用处理程序] → [iret/sysret] → 用户态

执行系统调用"完成时",对应着内核态返回到用户态的瞬间——这是题目描述的明确指向。

逐项再核对

操作起点态完成时态是否符合"内核 → 用户"
A 阻塞进程内核态内核态(接着调度)
B 执行 CPU 调度内核态取决于选中进程✗(不确定 → 不能描述为"导致转用户态")
C 唤醒进程内核态内核态
D 执行系统调用用户态进入 → 内核完成 → 返回用户态用户态

最终答案是 D(执行系统调用)

记忆要点

  • 用户 → 内核:陷入(中断、异常、系统调用入口)
  • 内核 → 用户:返回(iretsysret),最常见的就是系统调用返回

最后更新:

⚠️ 这道题暂未配可视化,欢迎在 CodeBrick 反馈区告诉我们你想看哪道题