Skip to content

2012年 408 操作系统 第 30 题

操作系统2012年选择题2分

题目

若某单处理器多进程系统中有多个就绪态进程,则下列关于处理机调度的叙述中,错误的是( )。

错因

A

A 是对的——进程结束时 CPU 必然空出来要选下一个进程跑,是最自然的调度时机。题问"错误的",A 是对的所以不该选;选了 A 多半是看错"错误"两字。

B

B 也是对的——新进程创建后也是常见调度时机:可能新进程优先级更高、需要立刻调度选它跑。比如 fork 后子进程是否立即抢占父进程,是调度策略问题,但调度时机本身是允许的

D

D 也是对的——系统调用从内核态返回用户态前,OS 通常会做一次调度检查(看有没有更高优先级的进程在就绪队列里、当前进程时间片是否用完等)。Linux 内核的"返回用户态前的调度点"就是这条。

总解析

题问"错误的"。先把"调度时机"梳理清楚:

时机是否可调度说明
进程结束CPU 自然空出
创建新进程新进程进入就绪队列,可能触发抢占
时间片用完RR 经典时机
阻塞(等 I/O 等)当前进程让出 CPU
从内核态返回用户态检查就绪队列是否有更高优先级
进程在临界区✓(用户级临界区)临界区只是同步保护、不阻止 CPU 调度

C 错在哪里

临界区(用户级互斥保护的代码段)和处理机调度是两件不同的事

  • 临界区 解决的是"多个进程不能同时进入这段代码"——靠互斥锁 / 信号量保证
  • 调度 决定"CPU 给哪个进程用"——靠调度算法

进程在临界区时仍可被调度让出 CPU——它退出时不释放锁就行。被调度走后另一个进程上来,如果也想进同一个临界区会被锁挡住、阻塞等。临界区不阻止调度

区分:内核临界区(不可抢占内核区) 是另一回事——某些操作在内核里不允许被打断,OS 会临时禁用抢占;但题面说"进程处于临界区"通常指用户级临界区,不影响调度。即使按内核临界区理解,"不能调度"也不是绝对真理(依内核设计而定),不应该被作为绝对正确的命题。

逐项核对:

选项描述判定
A进程结束时调度
B创建新进程后调度
C临界区时不能调度✗ 错 —— 临界区不阻止调度,进程仍可被切走
D返回用户态时调度

最终答案是 C

最后更新:

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