Files
obsidian/操作系统/2026年操作系统期末预测卷.md

8.5 KiB
Raw Blame History

2026年操作系统期末预测卷

考试信息

  • 满分100分
  • 时间120分钟
  • 题型7道大题与历年试卷格式一致

题目一进程控制与进程树分析15分

题目

阅读以下程序代码,回答问题:

#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并行性
硬件复杂度
  1. 4分某磁盘转速为7200 RPM平均寻道时间为8ms每个磁道500个扇区每个扇区512字节。

    • 计算平均旋转延迟
    • 计算读取一个扇区的平均访问时间
    • 如果要连续读取100个扇区在同一磁道上总访问时间是多少
  2. 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. 反向SCAN53→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.8SJF平均周转6.2HRRF平均周转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周转=23P2周转=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次访存