# 2026年操作系统期末预测卷 ## 考试信息 - **满分**:100分 - **时间**:120分钟 - **题型**:7道大题(与历年试卷格式一致) --- ## 题目一:进程控制与进程树分析(15分) ### 题目 阅读以下程序代码,回答问题: ```c #include #include #include 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次访存