操作系统章节测 01:操作系统概述 与 进程与线程
覆盖《操作系统概述》《进程与线程》两章,共 35 题(第 1-33 题为单项选择,第 34-35 题为综合大题),全部为模拟题。限时 80 分钟,先做后看答案。做错的题请登记到 错题本。
第 1 题 操作系统的四个特征中,互为存在条件、缺一不可的最基本两个特征是( )。 A. 并发与虚拟 B. 并发与共享 C. 共享与异步 D. 虚拟与异步
第 2 题 单处理器系统中,下列说法正确的是( )。 A. 多道程序设计使多个程序并行执行 B. 多个程序宏观上同时运行、微观上分时交替执行,称为并发 C. 并发与并行是同一个概念的两种说法 D. 引入多道程序后,任意时刻可以有多个程序同时处于运行态
第 3 题 分时系统与实时系统相比,下列说法错误的是( )。 A. 分时系统追求及时响应与交互性 B. 实时系统首要目标是满足截止时间要求,可靠性要求高 C. 实时系统以吞吐量最大化为设计目标 D. 分时系统的时间片轮转不能保证紧急任务优先处理
第 4 题 使多道批处理系统中 CPU 与 I/O 设备并行工作成为可能的关键技术是( )。 A. 虚拟存储技术 B. 通道技术与中断技术 C. SPOOLing 技术 D. 覆盖与交换技术
第 5 题 操作系统提供给应用程序(编程人员)使用的接口是( )。 A. 命令接口 B. 图形用户界面 GUI C. 系统调用 D. 库函数
第 6 题 下列指令中,属于特权指令的是( )。 A. 加法运算指令 B. 从内存取数指令 C. 置时钟指令 D. 陷入指令
第 7 题 关于陷入指令(trap),下列说法正确的是( )。 A. 陷入指令是特权指令,只能在内核态执行 B. 陷入指令必须在用户态可以执行,否则用户程序无法请求内核服务 C. 执行陷入指令后 CPU 仍处于用户态 D. 陷入指令由编译器在链接阶段自动插入,与操作系统无关
第 8 题 缺页中断属于( )。 A. 外中断 B. 内中断中的自愿中断 C. 内中断中的故障(fault) D. 内中断中的终止(abort)
第 9 题 时钟中断、I/O 完成中断、用户进程执行除法指令出错,依次属于( )。 A. 外中断、外中断、内中断 B. 内中断、外中断、内中断 C. 外中断、内中断、外中断 D. 内中断、内中断、外中断
第 10 题 中断隐指令完成的操作是( )。 A. 关中断、保存断点、取出中断服务程序入口地址并送 PC B. 保存通用寄存器、执行设备服务例程、恢复现场 C. 关中断、保存通用寄存器、执行中断返回 D. 判断中断优先级并处理中断嵌套
第 11 题 CPU 响应中断(检测中断信号)的时机是( )。 A. 任意时钟周期 B. 一条指令执行完毕后 C. 一个机器周期结束后 D. 取指周期结束后
第 12 题 用户程序发出一次磁盘读请求(系统调用)并阻塞等待,数据就绪后处理完毕返回用户程序。此过程中 CPU 由用户态进入内核态至少( )次。 A. 1 B. 2 C. 3 D. 4
第 13 题 与大内核相比,微内核结构的主要优点与代价是( )。 A. 性能更高 / 可靠性差 B. 可靠性与可扩展性好 / 服务进程间通信需经内核 IPC,频繁状态切换导致性能较低 C. 代码量更大 / 维护困难 D. 设备驱动运行在内核态 / 便于调试
第 14 题 关于外核(exokernel)体系结构,下列说法正确的是( )。 A. 内核负责资源的分配策略,用户态库操作系统负责资源保护 B. 内核只负责资源保护与多路复用,资源分配策略交由用户态的库操作系统实现 C. 外核将全部系统服务都置于内核态运行 D. 外核通过消息传递为每个应用提供文件系统服务
第 15 题 下列不属于 PCB 内容的是( )。 A. 进程标识符 PID B. 程序的代码 C. 进程优先级 D. 程序状态字 PSW 的副本
第 16 题 下列进程状态转换中,不可能发生的是( )。 A. 运行态→就绪态 B. 阻塞态→就绪态 C. 就绪态→阻塞态 D. 运行态→阻塞态
第 17 题 关于"运行态→阻塞态"的转换,正确的说法是( )。 A. 是被调度程序强制剥夺 CPU 导致的被动行为 B. 是进程自身请求等待某事件(如请求 I/O、P 操作)的主动行为 C. 由其他进程通过 wakeup 原语导致 D. 由时钟中断导致
第 18 题 处于静止阻塞(挂起阻塞)状态的进程,当它所等待的事件发生后,该进程将转换为( )。 A. 活动阻塞态 B. 运行态 C. 静止就绪(挂起就绪)态 D. 活动就绪态
第 19 题 进程控制原语(如创建、撤销、阻塞、唤醒)执行期间不允许中断,其原子性通过( )实现。 A. 信号量机制 B. 关中断指令 C. 硬件 TestAndSet 指令 D. 管程机制
第 20 题 关于进程通信方式,下列说法错误的是( )。 A. 共享内存是速度最快的 IPC 方式 B. 管道通信是半双工的,双向通信需要建立两个管道 C. 匿名管道可供任意两个无亲缘关系的进程使用 D. 消息传递方式可用于分布式系统中的进程通信
第 21 题 管道通信中,当写进程将管道缓冲区写满而读进程未取数据时,写进程将( )。 A. 继续写入并覆盖旧数据 B. 阻塞等待 C. 被撤销 D. 忙等待不阻塞
第 22 题 引入线程后,下列说法正确的是( )。 A. 线程是资源分配的基本单位,进程是处理机调度的基本单位 B. 进程是资源分配的基本单位,线程是处理机调度的基本单位 C. 进程和线程都是资源分配的基本单位 D. 线程拥有完整的系统资源,可独立于进程存在
第 23 题 在纯用户级线程(多对一模型)的系统中,下列说法正确的是( )。 A. 一个线程阻塞,内核可调度同进程的其他线程运行 B. 一个线程发起阻塞系统调用,整个进程都被阻塞 C. 进程内的多个线程可分配到多个处理机上并行执行 D. 线程切换必须陷入内核并由内核完成
第 24 题 同一进程内的两个线程切换时,下列说法正确的是( )。 A. 必须更换页表基址寄存器,切换地址空间 B. 不需要切换进程地址空间,只需保存/恢复线程的寄存器与栈 C. 必须先撤销原线程 D. 与进程切换的开销完全相同
第 25 题 三级调度中,决定将外存对换区中的进程换入内存的是( )。 A. 高级调度(作业调度) B. 中级调度 C. 低级调度(进程调度) D. 磁盘调度
第 26 题 下列情况中,不能进行进程调度与切换的是( )。 A. 当前进程时间片用完 B. 当前进程主动阻塞 C. 处理中断的过程中 D. 当前进程执行完毕进入终止态
第 27 题 作业 J1、J2、J3、J4 的到达时刻依次为 0、1、2、3,运行时间依次为 8、4、9、5。采用非抢占短作业优先(SJF)调度,平均周转时间为( )。 A. 14.25 B. 15.25 C. 13.75 D. 12.25
第 28 题 某时刻有三个作业等待调度:X 已等待 4、要求服务 2;Y 已等待 3、要求服务 6;Z 已等待 5、要求服务 5。采用高响应比优先(HRRN),将被调度的是( )。 A. X,响应比 3 B. Y,响应比 1.5 C. Z,响应比 2 D. X,响应比 2
第 29 题 关于时间片轮转(RR)调度,下列说法错误的是( )。 A. 时间片过大时,算法退化为先来先服务 B. 时间片过小时,进程切换的开销占比过高 C. 时间片越小,系统吞吐量一定越高 D. RR 适合分时系统,能保证较好的响应时间
第 30 题 关于多级反馈队列调度算法,下列说法错误的是( )。 A. 新进程通常进入最高优先级队列 B. 进程用完当前队列的时间片后降入下一级队列,通常时间片加倍 C. 高优先级队列为空时才调度低优先级队列中的进程 D. 长作业会永远停留在最高优先级队列中被反复调度
第 31 题 某记录型信号量 S 初值为 2,先后经过 3 次 P 操作、0 次 V 操作后,S.value 与等待队列中的进程数为( )。 A. −1 与 1 B. 1 与 1 C. −1 与 0 D. 0 与 1
第 32 题 关于死锁的必要条件,下列说法正确的是( )。 A. 存在循环等待则一定发生死锁 B. 破坏互斥条件是预防死锁最常用的方法 C. 死锁一定存在循环等待,但存在循环等待不一定死锁 D. 四个必要条件只要满足其中两个就可能死锁
第 33 题 系统有同类资源 10 个,三个进程 P1、P2、P3 的最大需求分别为 6、8、9,目前已分别分得 2、3、3。若用银行家算法判断,当前状态为( )。 A. 安全,存在安全序列 B. 不安全 C. 已经死锁 D. 无法判断
第 34 题(PV 应用大题,模拟题) 睡眠理发师问题。理发店内有一名理发师、一把理发椅和 3 张供顾客等候的椅子(即店内最多同时容纳 4 名顾客)。顾客到达时,若无空椅子则立即离开;有空椅子则坐下等候。理发师没有顾客时睡觉,有顾客时唤醒并依次理发。请用记录型信号量写出理发师进程与顾客进程的同步伪代码。要求:给出每个信号量的定义与初值理由,写出完整伪代码,并验证方案不会死锁。
第 35 题(银行家算法大题,模拟题) 某系统有 A、B、C 三类资源,总量为 (9, 6, 6),当前 5 个进程的资源状况如下:
(1) 计算各进程的 Need 向量与当前 Available 向量。 (2) 用安全性检查算法判断当前状态是否安全;若安全,给出一个完整的安全序列(列表推演)。 (3) 此时进程 P2 发出请求 (1, 1, 1),银行家算法能否分配?说明理由。 (4) 若改为进程 P1 发出请求 (1, 0, 1),能否分配?说明理由。
答案与解析
第 1 题:B |考点:操作系统四大特征及相互关系|难度:易 并发与共享互为存在条件:无并发则无需共享,不能共享则并发无法实现;虚拟与异步建立在二者之上。错因提醒:误选 A,把"最基本"错记成"并发与虚拟"。
第 2 题:B |考点:并发与并行的区别|难度:易 单处理器微观上任一时刻只有一个程序在执行,只能并发;"并行"需多核/多处理机支持。错因提醒:A、D 中"并行/多个同时运行态"是单核下的典型错误表述。
第 3 题:C |考点:分时与实时系统设计目标|难度:易 实时系统以截止时间与可靠性为首要目标,资源利用率甚至可让位于实时性;吞吐量最大化是多道批处理的目标。错因提醒:把批处理的目标安到实时系统头上。
第 4 题:B |考点:多道批处理的技术基础|难度:易 通道使 I/O 独立于 CPU,中断使 CPU 能感知 I/O 完成,二者共同支撑 CPU 与 I/O 并行。错因提醒:SPOOLing 是用磁盘模拟脱机 I/O 的技术,不是本题答案。
第 5 题:C |考点:操作系统接口|难度:易 程序接口 = 系统调用,是应用程序使用 OS 服务的唯一途径;命令接口与 GUI 面向人,库函数只是系统调用的封装。错因提醒:误选 D——printf 等"函数"底层仍靠系统调用完成。
第 6 题:C |考点:特权指令范围|难度:易 置时钟改变机器状态,属特权指令;算术与访存为普通指令;陷入指令必须用户态可执行。错因提醒:D 是本考点最高频陷阱。
第 7 题:B |考点:陷入指令与系统调用机制|难度:中 陷入指令在用户态执行,经中断/异常机制切换到内核态执行服务例程,再返回用户态。错因提醒:误选 A 者混淆了"执行陷入指令"(用户态)与"处理系统调用"(内核态)两个阶段。
第 8 题:C |考点:中断与异常分类|难度:中 缺页由当前访存指令引发,属内中断;调页后可修复并重新执行该指令,属故障类。错因提醒:凭"缺页引发磁盘 I/O"误判外中断是最常见丢分点。
第 9 题:A |考点:中断分类综合判定|难度:中 时钟中断与 I/O 完成中断来自 CPU 外部(外中断);除法出错由当前指令引发(内中断)。判定口诀:看来源是否与当前执行指令相关。
第 10 题:A |考点:中断隐指令的分工|难度:中 关中断、保存断点、取中断向量送 PC 由硬件(中断隐指令)完成;保存通用寄存器与执行服务例程由软件完成。错因提醒:B 中的"保存通用寄存器"是服务程序的事,与硬件分工别混淆。
第 11 题:B |考点:中断响应时机|难度:易 中断响应在指令周期末尾进行,一条指令的执行不可被中断打断。错因提醒:选 A/C 者忽略了"指令是最小可中断单位"。
第 12 题:B |考点:系统调用与中断的状态切换|难度:难 第一次:read 的陷入指令使 CPU 进入内核态启动 I/O 后返回用户态并阻塞;第二次:磁盘就绪发出 I/O 完成中断,CPU 再次进入内核态执行中断服务并唤醒进程。错因提醒:漏数 I/O 完成中断(误选 A);或多算不必要次数。
第 13 题:B |考点:大内核与微内核对比|难度:易 微内核只保留最基本功能,服务进程在用户态,通信经内核 IPC(消息传递),可靠可扩展但性能低。错因提醒:微内核性能更差,"微内核性能高"必错。
第 14 题:B |考点:外核结构|难度:中 外核只做资源保护与多路复用,分配策略下放给用户态 libOS。错因提醒:A 恰好把内核与 libOS 的职责说反。
第 15 题:B |考点:PCB 内容|难度:易 PCB 存管理信息与上下文,程序的代码本身在程序段,不在 PCB 中。错因提醒:PSW 副本(处理机上下文)在 PCB 中,不要误选 D。
第 16 题:C |考点:五态转换不可能边|难度:易 就绪进程未占有 CPU,不会发出等待请求;阻塞只能由运行态进入,阻塞唤醒后只能到就绪。错因提醒:"阻塞→运行""就绪→阻塞"都不存在,一并记住。
第 17 题:B |考点:运行→阻塞的主动性|难度:易 请求资源或事件是进程自身的主动行为;被剥夺 CPU(运行→就绪)才是被动的。错因提醒:A 描述的是运行→就绪。
第 18 题:C |考点:挂起态转换|难度:中 静止阻塞等的事件发生后转静止就绪,需被激活后才进入活动就绪(内存)。错因提醒:误选 A/D——挂起状态下进程不在内存,事件发生也不能直接回内存。
第 19 题:B |考点:原语的实现|难度:易 原语靠关中断(特权指令)保证不被打断,运行在内核态。错因提醒:原语是"用关中断实现的原子操作",与信号量机制(解决同步互斥)不是一回事。
第 20 题:C |考点:进程通信方式对比|难度:中 匿名管道基于 fork 后描述符继承,只能用于亲缘进程;无亲缘进程需命名管道。错因提醒:共享内存最快(少内核拷贝)、消息传递可用于分布式,这两条常设为正确项。
第 21 题:B |考点:管道机制|难度:易 写满阻塞写进程、读空阻塞读进程,靠阻塞维持同步。错因提醒:管道缓冲区不会覆盖旧数据。
第 22 题:B |考点:进程与线程的角色分工|难度:易 引入线程后:进程 = 资源分配单位,线程 = 处理机调度单位(标准口径)。错因提醒:A 把两者角色说反。
第 23 题:B |考点:用户级线程特性|难度:中 内核按进程分配 CPU,看不到用户级线程,故一个线程阻塞系统调用即整个进程阻塞,也无法利用多核;线程切换在用户态由线程库完成。错因提醒:A、C、D 都是内核级线程的性质。
第 24 题:B |考点:线程切换开销|难度:易 同进程线程共享地址空间,切换不换页表,只换寄存器与栈,开销远小于进程切换。错因提醒:跨进程的线程切换才需要换地址空间。
第 25 题:B |考点:三级调度职责|难度:易 中级调度负责内存与外存对换区之间的换入(激活)/换出(挂起)。错因提醒:高级调度管"作业接纳进内存",低级调度管"选进程上 CPU"。
第 26 题:C |考点:调度时机|难度:中 处理中断/异常过程中不能调度切换(中断处理不属于进程上下文)。错因提醒:A、B、D 都是正常的调度时机。
第 27 题:A |考点:SJF 甘特图计算|难度:中 非抢占 SJF:0 时刻仅 J1 到达 → J1(0–8);8 时刻就绪 J2(4)、J3(9)、J4(5),选 J2(8–12)→ J4(12–17)→ J3(17–26)。周转:J1=8、J2=11、J4=14、J3=24,平均 = 57/4 = 14.25。错因提醒:0 时刻只有 J1,"到达时间"约束漏看会把 J2 排在最前(算出 13.75 一类的错误项)。
第 28 题:A |考点:HRRN 响应比计算|难度:易 R = (等待+服务)/服务:X=(4+2)/2=3,Y=(3+6)/6=1.5,Z=(5+5)/5=2,选 X。错因提醒:分子是"等待+服务",不是"等待/服务",公式记错必错。
第 29 题:C |考点:时间片轮转特性|难度:易 时间片过小时切换开销剧增,吞吐量反而下降,"越小吞吐量越高"错误。错因提醒:RR 不饥饿、响应好,但吞吐量不占优。
第 30 题:D |考点:多级反馈队列|难度:中 长作业逐级降到最低优先级队列并在该级内轮转,不会永远留在最高级;"永远在最高级被反复调度"错误。错因提醒:新进程入最高级、时间片逐级加倍、高层空才服务低层——三条正确性质常被拆成干扰项。
第 31 题:A |考点:信号量 value 物理意义|难度:中 2−3 = −1 < 0:第三次 P 的进程阻塞;value = −1 表示等待队列有 |−1| = 1 个进程。错因提醒:S<0 时 |S| 才是等待数;S 的值不是"可用资源数"(可用为 0)。
第 32 题:C |考点:死锁四要素辨析|难度:中 四条件是死锁的必要条件:死锁⇒循环等待成立,但循环等待⇒死锁不成立(多实例资源可能不成死锁)。互斥由资源性质决定,一般不可破坏。错因提醒:A 忽略"多实例资源"的反例。
第 33 题:B |考点:银行家算法安全性判定|难度:中 Available = 10−8 = 2;Need 分别为 4、5、6,均大于 2,找不到可满足的进程,无安全序列——不安全(但尚未死锁,只是不能保证推进)。错因提醒:"不安全"≠"已死锁",选 C 越级了。
第 34 题:PV 应用大题解析 |考点:信号量同步建模(睡眠理发师)|难度:难
信号量定义与初值理由:
伪代码:
验证不死锁:
- P/V 配对完整:customers 由顾客 V、理发师 P(每客一次);barbers 由理发师 V、顾客 P;mutex 一进一出,三个信号量均严格成对。
- P 次序检查:顾客对 customers 的 V 在释放 mutex 之后,理发师对 mutex 的 P 在 P(customers) 之后——不存在"持 mutex 等待 customers、同时顾客持 customers 相关资源等 mutex"的环路。理发师 P(customers) 阻塞时不持有任何信号量(让权等待),顾客满员路径立即 V(mutex) 后离开,不持锁阻塞。
- 计数正确性:waiting 只在 mutex 保护下增减,容量约束(最多 3 人等候)由 if 判断保证。
- 每个阻塞都有对应的唤醒源:阻塞在 P(customers) 的理发师由下一位顾客 V(customers) 唤醒;阻塞在 P(barbers) 的顾客由理发师 V(barbers) 唤醒——系统总能推进,无死锁。
评分要点(大题按此自查):信号量物理意义说明、初值理由、临界区最小化(waiting 的操作夹紧在 P/V(mutex) 之间)、满员路径的 V(mutex) 不可漏。
第 35 题:银行家算法大题解析 |考点:银行家算法完整推演|难度:难
(1) Need = Max − Allocation;Available = 总量 − Allocation 之和:
Allocation 列和 = (7, 3, 4),故 Available = (9,6,6) − (7,3,4) = (2, 3, 2)。
(2) 安全性检查(Work 初值 = Available,选中进程执行后 Work += 其 Allocation):
全部 Finish = true,当前状态安全,安全序列 P1→P3→P0→P2→P4(不唯一,任给合法序列均可)。
(3) P2 请求 (1,1,1):① (1,1,1) ≤ Need_2 (4,1,2) ✓;② (1,1,1) ≤ Available (2,3,2) ✓;③ 试探分配:Available = (1,2,1),Allocation_2 = (3,2,2),Need_2 = (3,0,1);④ 安全性检查:Work = (1,2,1),各进程 Need:P1(2,2,1)✗(A 不足)、P2(3,0,1)✗、P3(2,3,2)✗、P0(4,2,2)✗、P4(3,2,3)✗——找不到任何可满足的进程,无安全序列。故不能分配,回滚到原状态,P2 等待。
(4) P1 请求 (1,0,1):① (1,0,1) ≤ Need_1 (2,2,1) ✓;② ≤ Available (2,3,2) ✓;③ 试探分配:Available = (1,3,1),Allocation_1 = (3,0,2),Need_1 = (1,2,0);④ 安全性检查:Work = (1,3,1):P1(1,2,0) ✓ → Work = (4,3,3);P3(2,3,2) ✓ → (5,3,4);P0(4,2,2) ✓ → (6,4,4);P2(4,1,2) ✓ → (8,5,5);P4(3,2,3) ✓ → (9,6,6)。安全(序列 P1→P3→P0→P2→P4),可以分配。
错因提醒(大题丢分三连):只比较"请求 ≤ Available"就放行(漏第④步全局安全检查);试探分配后忘记修改 Need;不安全时忘记回滚。另外 (3) 与 (4) 的对比说明:两个请求都"合法且资源够",但分配结果安全性不同——这正是银行家算法存在的意义。