第13章 · 计算与操作系统 · 阶段测试题答案¶
一 · 单选 (8 题)¶
1.1 B - 进程是资源分配单位, 线程是调度单位。
1.2 A - 虚拟内存让进程使用比物理内存大的地址空间。
1.3 C - 上下文切换保存/恢复 CPU 状态。
1.4 B - 死锁 4 必要条件: 互斥 / 占有等待 / 不可剥夺 / 循环等待。
1.5 A - CPU Cache L1/L2/L3 速度递减, 容量递增。
1.6 C - SIMD = Single Instruction Multiple Data。
1.7 B - Linux 是开源 OS 内核。
1.8 A - CUDA 是 NVIDIA GPU 编程框架。
二 · 多选 (4 题)¶
2.1 ABCD - 进程间通信方式。
2.2 ABD - C 错: 线程共享进程地址空间。
2.3 ABC - 都是 CPU 架构术语。
2.4 ABD - 都是 GPU 厂商。
三 · 简答 (5 题)¶
3.1 进程 vs 线程¶
| 维度 | 进程 | 线程 |
|---|---|---|
| 资源 | 独立地址空间 | 共享进程 |
| 切换开销 | 大 | 小 |
| 通信 | IPC | 共享内存 |
| 并发 | 进程级 | 线程级 |
| 数量 | 几百 | 上万 |
3.2 虚拟内存¶
核心: 通过 MMU + 页表, 进程用虚拟地址, 物理内存用物理地址 作用: - 进程隔离 (A 不能访问 B 的内存) - 内存超载 (Swap) - 共享 (mmap / 共享库)
3.3 死锁 4 条件¶
- 互斥: 资源一次只能一个进程
- 占有等待: 持有资源 + 等待新资源
- 不可剥夺: 不能强行抢占
- 循环等待: 形成环路
解决: 破坏任一条件(常用: 资源有序分配)
3.4 CPU 流水线¶
5 级: 取指 IF / 译码 ID / 执行 EX / 访存 MEM / 写回 WB 冒险: - 数据冒险 (RAW / WAR / WAW) - 结构冒险 (资源冲突) - 控制冒险 (分支)
3.5 Linux 关键命令¶
| 命令 | 用途 |
|---|---|
ps / top |
进程查看 |
kill |
终止进程 |
grep / awk / sed |
文本处理 |
find |
文件查找 |
ssh |
远程登录 |
git |
版本控制 |
docker |
容器 |
四 · 编程 (2 题)¶
4.1 多线程¶
import threading
def worker(n):
print(f"Worker {n}")
threads = [threading.Thread(target=worker, args=(i,)) for i in range(5)]
for t in threads: t.start()
for t in threads: t.join()