Skip to content

2021年 408 操作系统 第 24 题

操作系统2021年选择题2分

题目

下列操作中,操作系统在创建新进程时,必须完成的是( )。

Ⅰ. 申请空白的进程控制块 Ⅱ. 初始化进程控制块 Ⅲ. 设置进程状态为执行态

错因

A

只挑了 Ⅰ"申请 PCB",把 Ⅱ"初始化 PCB"漏掉了。可能想成"申请来一块空 PCB 就完事了"。但 PCB 申请下来只是块原始内存——PID、父进程 ID、初始上下文、初始程序计数器、就绪态、资源初始指针都得填进去,这些初始化动作不做完,进程根本起不来。

C

把"创建后就要跑"想当然地写进了流程,挑了 Ⅰ + Ⅲ。其实进程刚创建好的状态是就绪态——表示"我准备好了,等调度器把 CPU 分给我"。从就绪到执行还差一步调度,不是创建动作的一部分。即使只有这一个进程,也得走调度器选中它,才会从就绪转执行。

D

跟 C 同类错误:把"执行态"当成创建后的初始状态。新进程创建完毕一定是就绪态,加入就绪队列等调度。"执行态"是被调度器选中、CPU 真的跑这个进程时的状态——是调度产生的,不是创建产生的。

总解析

进程创建的标准流程("创建原语"做的事):

步骤操作必做?
分配新进程标识符 PID
申请空白 PCB(Ⅰ)
为进程分配资源(内存、文件、I/O 设备)
初始化 PCB(PID、状态、上下文、程序入口、资源指针等)(Ⅱ)
将新进程置为就绪态,挂入就绪队列

题里的 Ⅲ 写的是"设置为执行态",这是错的——新进程的初始状态是就绪态,要等调度器把 CPU 分配给它才会变成执行态。所以 Ⅲ 既不是必做项、它的描述本身也是错的。

新进程从就绪到执行的链条:

[创建] PCB 申请 + 初始化 → 状态置就绪 → 加入就绪队列
                                 ↓ (等调度器选中)
                              [调度] → 状态变执行 → CPU 开始跑

必做的就是 Ⅰ、Ⅱ。

最终答案是 B

最后更新:

🎬 可视化演示
加载中...

提示:可在可视化区直接操作播放、步进、修改参数