# 2026年操作系统期末预测卷

## 考试信息
- **满分**：100分
- **时间**：120分钟
- **题型**：7道大题（与历年试卷格式一致）

---

## 题目一：进程控制与进程树分析（15分）

### 题目

阅读以下程序代码，回答问题：

```c
#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>

int main() {
    pid_t pid;
    int status;

    printf("A: pid=%d\n", getpid());

    pid = fork();
    if (pid == 0) {
        printf("B: pid=%d, ppid=%d\n", getpid(), getppid());
        pid = fork();
        if (pid == 0) {
            printf("C: pid=%d, ppid=%d\n", getpid(), getppid());
        } else {
            wait(&status);
            printf("D: pid=%d\n", getpid());
        }
    } else {
        printf("E: pid=%d\n", getpid());
        pid = fork();
        if (pid == 0) {
            printf("F: pid=%d, ppid=%d\n", getpid(), getppid());
        } else {
            wait(&status);
            wait(&status);
            printf("G: pid=%d\n", getpid());
        }
    }

    return 0;
}
```

**问题**：
1. （6分）画出完整的进程树，标注每个进程执行的输出语句（用字母A-G表示）
2. （4分）该程序共有多少个进程（包括初始进程）？请列出所有进程的创建顺序
3. （3分）输出语句D和G的执行顺序是否一定？为什么？
4. （2分）如果将所有`wait(&status)`调用删除，进程输出结果会发生什么变化？

---

## 题目二：磁盘调度算法计算（15分）

### 题目

某磁盘有200个磁道（编号0-199），磁盘请求队列中的磁道号依次为：

**98, 183, 37, 122, 14, 124, 65, 67**

当前磁头位于磁道**53**，向磁道号**增大**的方向移动。

**问题**：
1. （8分）分别使用以下磁盘调度算法，计算磁头移动的总磁道数：
   - FCFS（先来先服务）
   - SSTF（最短寻道时间优先）
   - SCAN（电梯算法）
   - C-SCAN（循环扫描算法）

2. （4分）在上述四种算法中，哪种算法的磁头移动总磁道数最少？哪种最多？简要说明原因。

3. （3分）如果磁头初始方向改为向磁道号减小的方向移动，SCAN算法的结果会如何变化？请计算新的磁头移动总磁道数。

---

## 题目三：虚拟内存与页面置换（15分）

### 题目

某系统采用请求分页存储管理，页面大小为4KB，分配给某进程的物理页框数为**4**。该进程的页面访问序列为：

**1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5**

**问题**：
1. （9分）分别使用以下页面置换算法，计算缺页次数和缺页率：
   - OPT（最优算法）
   - FIFO（先进先出算法）
   - LRU（最近最久未使用算法）

2. （3分）如果将分配的物理页框数增加到5，使用FIFO算法，缺页次数是否会减少？请验证并解释是否出现了Belady异常。

3. （3分）假设页面大小改为8KB（其他条件不变），该进程的虚拟地址空间大小为32KB，请问：
   - 进程共有多少个虚拟页？
   - 页表需要多少个页表项？
   - 虚拟地址`0x3A5F`对应的页号和页内偏移分别是多少？

---

## 题目四：文件系统与inode计算（15分）

### 题目

某Unix文件系统采用Ext2结构，文件系统的块大小为**4KB**，磁盘块号占**4字节**，inode中包含**15个地址项**（12个直接索引、1个一次间接、1个二次间接、1个三次间接）。

**问题**：
1. （6分）计算：
   - 每个磁盘块可以存放多少个磁盘块号？
   - 一个inode支持的最大文件大小是多少？（请列出计算过程）

2. （4分）假设某文件大小为260KB，请问：
   - 该文件占用多少个数据块？
   - inode中的哪些地址项会被使用？
   - 是否需要使用间接索引块？如果需要，使用几个？

3. （5分）假设要读取该文件偏移量为100KB处开始的4KB数据，请描述完整的地址转换过程：
   - 如何确定使用inode中的哪个地址项？
   - 如何计算数据在磁盘上的具体位置？
   - 需要访问几次磁盘？

---

## 题目五：CPU调度算法计算（15分）

### 题目

某单处理器系统中有以下进程，按到达时间排序：

| 进程 | 到达时间 | 运行时间 |
|------|----------|----------|
| P1   | 0        | 8        |
| P2   | 1        | 4        |
| P3   | 2        | 9        |
| P4   | 3        | 5        |
| P5   | 4        | 2        |

**问题**：
1. （9分）分别使用以下调度算法，计算各进程的完成时间、周转时间和带权周转时间，并求平均周转时间和平均带权周转时间：
   - FCFS（先来先服务）
   - SJF（非抢占最短作业优先）
   - HRRF（最高响应比优先）

2. （3分）在上述三种算法中：
   - 哪种算法的平均周转时间最短？
   - 哪种算法可能产生"饥饿"现象？为什么？

3. （3分）如果采用时间片轮转调度（RR），时间片大小为3，请画出甘特图并计算P1和P2的周转时间。

---

## 题目六：I/O控制方式与磁盘访问（15分）

### 题目

1. （6分）比较以下四种I/O控制方式的特点，填写下表：

| 特性 | 程序直接控制 | 中断驱动I/O | DMA | 通道 |
|------|-------------|-------------|-----|------|
| CPU介入频率 | | | | |
| 数据传输单位 | | | | |
| CPU与I/O并行性 | | | | |
| 硬件复杂度 | | | | |

2. （4分）某磁盘转速为7200 RPM，平均寻道时间为8ms，每个磁道500个扇区，每个扇区512字节。
   - 计算平均旋转延迟
   - 计算读取一个扇区的平均访问时间
   - 如果要连续读取100个扇区（在同一磁道上），总访问时间是多少？

3. （5分）某系统使用SPOOLing技术管理打印机：
   - 画出SPOOLing系统的组成结构图
   - 解释SPOOLing如何将独占设备改造为共享设备
   - 说明SPOOLing与缓冲技术的区别

---

## 题目七：段页式存储管理与地址转换（10分）

### 题目

某系统采用段页式存储管理，地址结构如下：
- 段号：8位
- 页号：8位
- 页内偏移：16位

系统参数：
- 页大小：64KB
- 段表基址寄存器指向的段表如下：

| 段号 | 段长（页数） | 页表始址 |
|------|-------------|----------|
| 0    | 4           | 1000     |
| 1    | 6           | 2000     |
| 2    | 2           | 3000     |

页表（部分）如下：

| 页号 | 物理块号 |
|------|----------|
| 0    | 50       |
| 1    | 51       |
| 2    | 52       |
| 3    | 53       |

**问题**：
1. （4分）逻辑地址`0x00018000`对应的段号、页号、页内偏移分别是多少？该地址对应的物理地址是多少？（写出计算过程）

2. （3分）逻辑地址`0x01028000`是否合法？为什么？如果合法，计算其物理地址。

3. （3分）与纯分页和纯分段相比，段页式存储管理有哪些优点和缺点？

---

## 参考答案要点

### 题目一参考答案
1. 进程树：A→(B, E)，B→(C, D)，E→(F, G)
2. 共7个进程，创建顺序：A→B→E→C→F→D→G
3. D和G的执行顺序不一定，取决于哪个子进程先完成
4. 删除wait后，输出顺序不确定，可能出现孤儿进程

### 题目二参考答案
1. FCFS: 640道，SSTF: 236道，SCAN: 299道，C-SCAN: 356道
2. SSTF最少（贪心选择最近），FCFS最多（无优化）
3. 反向SCAN：53→37→14→0→65→67→98→122→124→183，总移动：359道

### 题目三参考答案
1. OPT: 8次(66.7%)，FIFO: 10次(83.3%)，LRU: 10次(83.3%)
2. 页框数=5时FIFO缺页仍为10次，未出现Belady异常
3. 虚拟页数=4，页表项=4，地址0x3A5F：页号=3，偏移=0x2A5F

### 题目四参考答案
1. 每块1024个块号，最大文件约16GB+
2. 65个数据块，使用直接索引12个+一次间接索引1个，不需要二次间接
3. 偏移100KB=第25块，使用直接索引项2，需2次磁盘访问

### 题目五参考答案
1. FCFS平均周转7.8，SJF平均周转6.2，HRRF平均周转7.0
2. SJF最短，SJF可能饥饿（长作业持续等待）
3. RR甘特图：0-3(P1),3-6(P2),6-8(P5),8-11(P1),11-14(P3),14-17(P4),17-20(P1),20-23(P3),23-25(P3)
   P1周转=23，P2周转=6

### 题目六参考答案
1. 表格填写（见知识点总结）
2. 旋转延迟4.17ms，扇区访问12.21ms，连续100扇区约12.5ms
3. SPOOLing由输入/输出井和预输入/缓输出程序组成

### 题目七参考答案
1. 段号=0，页号=1，偏移=0x8000，物理地址=51×64KB+0x8000
2. 合法，段号1页号2，物理地址=52×64KB+0x8000
3. 优点：分段便于共享/保护+分页解决外部碎片；缺点：地址转换复杂，需3次访存
