Appearance
题目
下列选项中,导致创建新进程的操作是( )。
I. 用户登录成功 II. 设备分配 III. 启动程序执行
错因
A
承认 Ⅰ 登录创建进程,又把 Ⅱ 设备分配也算进去——但设备分配只是 OS 把某个设备资源分配给已经存在的进程使用,不会因此创建新进程。把"分配资源"误以为是"创建进程"是把资源管理和进程管理混了。
B
承认 Ⅲ 启动程序,但漏 Ⅰ 登录、把 Ⅱ 设备分配错算进去——双错。登录成功必创建一个 shell 进程让用户用,是最经典的"事件触发进程创建"场景。
D
把 Ⅱ 设备分配也算上——同 A 的错。OS 给某进程分配磁盘 / 打印机等设备只是修改资源表,跟进程创建无关。
总解析
进程创建的典型时机:
| 事件 | 是否创建新进程 | 说明 |
|---|---|---|
| Ⅰ 用户登录成功 | ✓ | 系统为该用户启动一个 shell 进程(命令解释器),用户的所有命令都在这个 shell 下 fork 出新进程 |
| Ⅱ 设备分配 | ✗ | 只是修改设备分配表,把某设备的使用权给某进程;进程已经存在,不创建新的 |
| Ⅲ 启动程序执行 | ✓ | 双击程序 / shell 里输 ./a.out → fork + exec → 新进程诞生 |
区分钥匙:是不是有"新的可执行实体被装入内存并被调度"——有就是创建进程;只是把已有资源(设备、文件、信号量)分给某进程的,不是创建。
Ⅱ 为什么不算创建进程:
设备分配的工作流(典型场景):
进程 P 申请打印机 → OS 检查设备表 → 设备空闲 → 标记为 P 占用 → 把设备号给 P整个过程进程 P 是发起者,没有"新进程"产生。如果设备被占,P 进入设备等待队列阻塞——同样不是创建新进程,是改变 P 自己的状态。
正确的是 Ⅰ Ⅲ。
最终答案是 C。