Skip to content

《操作系统》第一学期期末试卷A (精选04)

一、 选择题(每题 1 分,共 25 分)

1、以下哪一个是linux内核的稳定版本( )

A. 2.5.24

B. 2.6.17

C. 1.7.18

D. 2.3.20

查看答案与解析

答案:B

**解析:**在 Linux 内核的经典版本号命名规则中(针对 2.6 及以前的版本),版本号通常由三部分组成:主版本号.次版本号.修订版本号

  • 次版本号为偶数:表示该版本是一个经过充分测试的稳定版本(例如 2.4.x, 2.6.x)。
  • 次版本号为奇数:表示该版本是一个包含新特性的开发/测试版本(例如 2.3.x, 2.5.x)。

选项中,2.6.17 的次版本号为 6(偶数),因此它是稳定版本。


难度: ⭐ 考点: #Linux内核 #版本命名规范

💡 学习锦囊

📖 相关公式与知识点:

  • 版本分类:稳定版(Stable) vs 开发版(Development)。
  • 现代命名:自 Linux 3.0 以后,这种奇偶数规则已被废弃,转而采用更频繁的迭代发布。
🔄 举一反三
  1. 下列 Linux 内核版本号中,属于开发版本的是( )。
    • A. 2.4.20
    • B. 2.6.32
    • C. 2.5.1
    • D. 2.2.16
      查看练习答案与解析

      答案:C 解析:次版本号为 5(奇数),代表开发版本。

      :::: :::::

2、现代操作系统的两个基本特征是( )和资源共享。

A. 多道程序设计

B. 中断处理

C. 程序的并发执行

D. 实现分时与实时

查看答案与解析

答案:C

解析:现代操作系统具备四个基本特征:并发、共享、虚拟、异步。其中,并发共享是操作系统两个最基本的特征,它们互为存在条件:

  1. 资源共享是以程序并发执行为条件的。
  2. 程序的并发执行又必须以资源共享为基础。

选项 C “程序的并发执行”即指并发性。


难度: ⭐ 考点: #操作系统基本特征 #并发 #共享

💡 学习锦囊

📖 相关公式与知识点:

  • 并发(Concurrency):指两个或多个事件在同一时间间隔内发生。
  • 并行(Parallelism):指两个或多个事件在同一时刻发生(通常需要多核 CPU 支持)。
🔄 举一反三
  1. 操作系统中,并发性和( )是互为存在条件的。
    • A. 虚拟性
    • B. 共享性
    • C. 异步性
    • D. 可靠性
      查看练习答案与解析

      答案:B 解析:并发与共享是操作系统最基本的特征,二者互为依托。

      :::: :::::

3、下列关于多道程序设计系统的说法,不正确的是( )

A. 多道程序同时存在于内存中且并发执行 B. 处理机和设备之间、设备与设备之间可并行工作 C. 处理机上会同时运行多道程序 D. 系统的吞吐量远远大于单道程序设计系统

查看答案与解析

答案:C

解析:

  • A、D项:多道程序设计的核心正是让多道程序同时驻留内存并并发执行,从而极大提高吞吐量。
  • B项:多道程序设计使得 I/O 设备可以在 CPU 计算的同时进行数据传输,实现了并行工作。
  • C项错误:在单处理机(单核 CPU)系统中,虽然宏观上多道程序在并发推进,但微观上任意时刻处理机只能运行一道程序

难度: ⭐ 考点: #多道程序设计 #并发与并行

💡 学习锦囊

📖 相关公式与知识点:

  • 多道程序设计的特点:多道、并发、共享、异步。
  • 微观与宏观:宏观并行(并发),微观串行。
🔄 举一反三
  1. 引入多道程序设计技术的根本目的是( )。
    • A. 提高资源利用率
    • B. 方便用户使用
    • C. 增强系统安全性
    • D. 减少系统开销
      查看练习答案与解析

      答案:A 解析:通过让多道程序并发执行,减少 CPU 空闲等待 I/O 的时间,最大化硬件资源的利用率。

      :::: :::::

4、下面哪一个不是程序在并发系统内执行的特点( )

A. 程序执行的间断性 B. 相互通信的可能性 C. 产生死锁的必然性 D. 资源分配的动态性

查看答案与解析

答案:C

**解析:**并发执行的程序具备以下特征:

  1. 间断性:由于共享资源互斥及速度不匹配,程序执行呈现“执行-暂停-执行”的规律。
  2. 失去封闭性:资源状态由多个程序共同改变。
  3. 不可再现性:相同输入可能因为执行顺序不同产生不同结果。

死锁只是并发执行中可能发生的一种不安全状态,并非并发执行的必然结果。可以通过合理的调度与同步机制完全避免死锁。


难度: ⭐ 考点: #程序并发特征 #死锁

💡 学习锦囊

📖 相关公式与知识点:

  • 程序并发特征:间断性、失去封闭性、不可再现性。
  • 死锁的必要条件:互斥、占有并等待、非抢占、循环等待。
🔄 举一反三
  1. 下列不属于程序并发执行引起的副作用的是( )。
    • A. 死锁
    • B. 饥饿
    • C. 竞态条件
    • D. 提高吞吐量
      查看练习答案与解析

      答案:D 解析:提高吞吐量是并发设计的初衷(正面效益),而非副作用。

      :::: :::::

5、有两个并发执行的进程P1和 P2,共享初始值为 1的变量 $x$ 。P1 对 $x$ 加 1,P2 对 $x$ 减 1,加 1和减1操作的指令序列分别如下所示:

//加 1 操作

load R1, $x$ (指令1)

inc R1 (指令2)

store $x$,R1 (指令3)

//减 1 操作

load R2, $x$ (指令4)

dec R2 (指令5)

store $x$,R2 (指令6)

两个操作完成后, $x$ 的值( )。

A.可能为-1 或 3

B.只能为 1

C. 可能为 0、1 或 2

D.可能为-1、0、1、2

查看答案与解析

答案:C

解析: 本题考查竞态条件(Race Condition)。由于缺乏互斥保护,指令 1-6 的交叉执行顺序会影响最终结果。初始 $x=1$

我们可以分析最终由哪个进程执行最后一次 store 操作:

  1. 最终由 P1 存储(P2 先存,P1 后存覆盖):
    • 若 P1 读取时 $x=1$,则 P1 计算出 R1=2。最终 P1 存入 2
    • 若 P1 在 P2 执行完减 1($x=0$)后读取,则 P1 计算出 R1=1。最终 P1 存入 1
  2. 最终由 P2 存储(P1 先存,P2 后存覆盖):
    • 若 P2 读取时 $x=1$,则 P2 计算出 R2=0。最终 P2 存入 0
    • 若 P2 在 P1 执行完加 1($x=2$)后读取,则 P2 计算出 R2=1。最终 P2 存入 1

综上所述,$x$ 的最终可能取值为 0, 1, 2


难度: ⭐⭐ 考点: #竞态条件 #进程并发 #原子操作

💡 学习锦囊

📖 相关公式与知识点:

  • 竞态条件:多个进程并发读写共享数据,最终结果取决于指令执行的精确时序。
  • 解决方法:通过信号量、互斥锁将复合操作封装为原子操作
🔄 举一反三
  1. 假设进程 A 执行 count++,进程 B 执行 count++,初始值 count=0。若无互斥机制,两个进程各执行一次后,count 的最终可能值为( )。
    • A. 1
    • B. 2
    • C. 1 或 2
    • D. 0, 1 或 2
      查看练习答案与解析

      答案:C 解析:若发生覆盖,则为 1;若顺序执行,则为 2。

      :::: :::::

6、下列有关时间片的进程调度的描述中,错误的是( )

A.时间片越短,进程切换的次数越多,系统开销也越大。 B.当前进程的时间片用完后,该进程状态由执行态变为阻塞态。 C.时钟中断发生后,系统会修改当前的进程在时间片内的剩余时间。 D.影响时间片大小的主要因素包括响应时间、系统开销 and 进程数量。

查看答案与解析

答案:B

解析:

  • A、D项:时间片大小的设计需要权衡响应时间系统开销。时间片过短会导致频繁的上下文切换,增加系统无谓开销。
  • C项:硬件时钟中断是实现时间片调度的物理基础。
  • B项错误:当进程的时间片耗尽时,它并没有在等待任何外部事件,只是单纯失去了 CPU 执行权,因此应当转换为就绪态,重新排队等待调度,而不是阻塞态。

难度: ⭐ 考点: #进程状态转换 #时间片轮转调度

💡 学习锦囊

📖 相关公式与知识点:

  • 运行 $\rightarrow$ 就绪:时间片耗尽、被更高优先级进程抢占。
  • 运行 $\rightarrow$ 阻塞:等待 I/O、申请资源失败、主动 Sleep。
🔄 举一反三
  1. 在时间片轮转调度算法中,若时间片无限长,则该算法退化为( )。

    • A. 先来先服务 (FCFS)
    • B. 短作业优先 (SJF)
    • C. 优先级调度
    • D. 高响应比优先 (HRRN)
      查看练习答案与解析

      答案:A 解析:时间片无限长意味着进程可以一直执行直到结束,等同于 FCFS。

      :::: :::::
  2. 某时刻进程的资源使用情况如下表所示:

进程已分配资源仍需分配可用资源
R1R2R3R1R2R3R1R2R3
P1200001021
P2120132
P3011131
P4001200

此时的安全序列是( )。

A.P1、P4、P3、P2

B.P1、P2、P3、P4

C. P4、P1、P3、P2

D.不存在

查看答案与解析

答案:D

解析:采用银行家算法的安全状态检查步骤: 当前可用资源向量 $\text{Available} = [0, 2, 1]$

  1. 第一步:寻找满足 Need $\leq$ Available 的进程

    • 检查各进程的 Need:
      • P1: $[0, 0, 1] \leq [0, 2, 1]$ (满足)
      • P2: $[1, 3, 2] > [0, 2, 1]$
      • P3: $[1, 3, 1] > [0, 2, 1]$
      • P4: $[2, 0, 0] > [0, 2, 1]$
    • 只有 P1 满足条件。
  2. 第二步:P1 运行完毕释放资源

    • $\text{Available} = [0, 2, 1] + \text{Allocation}(P1)[2, 0, 0] = [2, 2, 1]$
  3. 第三步:再次检查剩余进程

    • 检查 Need:
      • P2: $[1, 3, 2] > [2, 2, 1]$
      • P3: $[1, 3, 1] > [2, 2, 1]$
      • P4: $[2, 0, 0] \leq [2, 2, 1]$ (满足)
    • 执行 P4
  4. 第四步:P4 运行完毕释放资源

    • $\text{Available} = [2, 2, 1] + \text{Allocation}(P4)[0, 0, 1] = [2, 2, 2]$
  5. 第五步:检查 P2 and P3

    • P2 Need: $[1, 3, 2]$ 中 R2 需要 3 个,但 Available 仅剩 2 个。不满足。
    • P3 Need: $[1, 3, 1]$ 中 R2 需要 3 个,但 Available 仅剩 2 个。不满足。

系统无法为剩余进程分配足够资源,进入不安全状态,不存在安全序列


难度: ⭐⭐⭐ 考点: #银行家算法 #死锁避免 #安全序列

💡 学习锦囊

📖 相关公式与知识点:

  • 安全性定理:若存在至少一个安全序列,则系统处于安全状态;否则处于不安全状态(可能发生死锁)。
🔄 举一反三
  1. 在死锁避免算法中,不安全状态( )。
    • A. 一定会导致死锁
    • B. 可能会导致死锁
    • C. 绝对不会导致死锁
    • D. 就是死锁状态
      查看练习答案与解析

      答案:B 解析:不安全状态是死锁的必要非充分条件。

      :::: :::::

8、 在下列同步机制中,可以实现让权等待的是( )

A.Peterson 方法

B.swap 指令

C. 记录型信号量方法

D. TestAndSet 指令

查看答案与解析

答案:C

**解析:**同步机制的四个准则为:空闲让进、忙则等待、有限等待、让权等待

  • A、B、D项:采用的都是软件锁或硬件原子指令,当条件不满足时,进程会处于循环测试的“忙等”状态,白白浪费 CPU 资源。
  • C项正确:记录型信号量引入了一个进程链表指针。当进程申请资源失败时,会调用 block 原语自我阻塞,让出处理机(让权),并挂入等待队列中。

难度: ⭐ 考点: #同步准则 #让权等待 #记录型信号量

💡 学习锦囊

📖 相关公式与知识点:

  • 同步机制四准则:空闲让进、忙则等待、有限等待、让权等待。
  • TestAndSet/Swap:硬件指令,忙等(不满足让权等待)。
🔄 举一反三
  1. 信号量机制中的 wait(S) 操作(即 P 操作),当 S < 0 时,进程将( )。
    • A. 继续执行
    • B. 进入就绪队列
    • C. 进入阻塞队列
    • D. 发生死锁
      查看练习答案与解析

      答案:C 解析S < 0 说明资源耗尽,进程需挂起等待。

      :::: :::::

9、若系统S1采用死锁避免方法,S2采用死锁检测方法。下列叙述中,正确的是( )

Ⅰ.S1 会限制用户申请资源的顺序,而 S2 不会

Ⅱ.S1 需要进程运行所需的资源总量信息,而 S2 不会

Ⅲ.S1 不会给可能导致死锁的进程分配资源,而 S2 会

A.仅Ⅰ、Ⅱ

B.仅Ⅱ、Ⅲ

C. Ⅰ、Ⅲ

D. Ⅰ、Ⅱ、Ⅲ

查看答案与解析

答案:B

解析:

  • Ⅰ错误:“限制资源申请顺序”属于**死锁预防(Deadlock Prevention)**的策略,避免策略(S1)并不限制申请顺序。
  • Ⅱ正确:避免策略(如银行家算法)在动态分配时需要评估风险,必须预先知道进程的最大资源需求量(Max)
  • Ⅲ正确:S1 每次分配前都会进行安全性检查,不分配会导致不安全状态的资源;而 S2 允许死锁隐患发生,分配后定期检测死锁。

故正确答案为 B(仅Ⅱ、Ⅲ)。


难度: ⭐⭐ 考点: #死锁避免 #死锁检测 #死锁预防

💡 学习锦囊

📖 相关公式与知识点:

  • 解决死锁四策略:预防(严格限制)、避免(动态评估)、检测与解除(事后处理)、忽略(鸵鸟策略)。
🔄 举一反三
  1. 银行家算法属于死锁处理方法中的( )。
    • A. 预防策略
    • B. 避免策略
    • C. 检测策略
    • D. 解除策略
      查看练习答案与解析

      答案:B 解析:典型代表。

      :::: :::::

10、系统引导的过程一般包括以下几个步骤:a.MBR中引导装载程序启动;b.用户登录;c.Linux内核运行;d.BIOS自检。正确的顺序是( )。

A.d,b,c,a

B.d,a,c,b

C. b,d,c,a

D.a,d,c,b

查看答案与解析

答案:B

**解析:**计算机系统的标准开机引导流程如下:

  1. 加电自检:主板上的 BIOS/UEFI 固件启动,进行硬件自检 (d)。
  2. 磁盘引导:BIOS 读取启动盘的第一个扇区——主引导记录 (MBR) 并执行其中的装载程序 (a)。
  3. 内核加载:引导程序加载操作系统内核至内存并移交控制权,Linux 内核开始运行 (c)。
  4. 系统初始化:启动 init/systemd 进程,完成用户登录界面的加载 (b)。

正确顺序为 d $\rightarrow$ a $\rightarrow$ c $\rightarrow$ b


难度: ⭐ 考点: #系统引导流程 #BIOS #MBR

💡 学习锦囊

📖 相关公式与知识点:

  • 引导扇区:MBR(主引导记录)通常位于磁盘的 0 面 0 道 1 扇区,大小 512 字节。
🔄 举一反三
  1. 操作系统内核在系统引导过程中被加载到( )中。
    • A. ROM
    • B. RAM
    • C. Cache
    • D. 交换分区
      查看练习答案与解析

      答案:B 解析:运行中的代码必须驻留内存(RAM)。

      :::: :::::

11、下列说法正确的是( )

A.Linux的 CFS调度器在选择下一个运行进程时,总是选择权重最大的进程参与运行。 B.高版本 Linux 内核提供了 SCHED_FIFO 和 SCHED_RR 两种实时调度策略。 C.Linux的管道可实现双向数据传输。 D.Linux内核中最常见的锁是自旋锁,它通常用于多处理器系统中的进程互斥。

查看答案与解析

答案:B

解析:

  • A项错误:CFS(完全公平调度器)的核心思想是记录每个进程的虚拟运行时间(vruntime)。在选择下一个运行进程时,CFS 总是选择 vruntime 最小的进程,而不是权重最大的进程。
  • B项正确:Linux 提供了符合 POSIX 标准的实时调度策略,包括先进先出(SCHED_FIFO)和时间片轮转(SCHED_RR)。
  • C项错误:传统的 Linux 匿名管道是单向(半双工)的,若要双向传输需要建立两个管道。
  • D项错误:自旋锁(Spinlock)设计用于多处理器系统(SMP)中保护极短的内核临界区。持有自旋锁的进程绝不能休眠,因此不能用于普通的“进程互斥”(因为进程可能会发生阻塞/休眠)。

难度: ⭐⭐ 考点: #Linux进程调度 #CFS #管道通信 #自旋锁

💡 学习锦囊

📖 相关公式与知识点:

  • vruntime 计算$\text{vruntime} = \text{实际运行时间} \times \frac{\text{NICE\_0\_LOAD}}{\text{进程权重}}$
🔄 举一反三
  1. 在 Linux 的 CFS 调度算法中,决定进程优先级(权重)的参数通常是( )。
    • A. PID
    • B. Nice 值
    • C. 占用内存大小
    • D. I/O 等待时间
      查看练习答案与解析

      答案:B 解析:Nice 值范围为 -20 到 19,值越小权重越大。

      :::: :::::

12、下列关于缺页处理的叙述中,错误的是( )。

A. 缺页是在地址转换时CPU检测到的一种异常 B. 缺页处理由操作系统提供的缺页处理程序来完成 C. 缺页处理程序根据页故障地址从外存读入所缺失的页 D. 缺页处理完成后回到发生缺页的指令的下一条指令继续执行

查看答案与解析

答案:D

解析:

  • A、B、C项:缺页中断(Page Fault)是由 CPU 硬件在进行 MMU 地址转换时,发现页表项的有效位为 0 触发的内中断(异常)。操作系统捕获该异常后,由缺页处理程序负责将外存中的页调入内存。
  • D项错误:缺页异常属于“故障(Fault)”。在缺页处理程序将页面成功调入内存后,必须重新执行刚才那条导致缺页的指令(因为该指令之前由于缺页并未执行成功),而不是执行下一条指令。

难度: ⭐ 考点: #缺页中断 #内中断 #异常处理

💡 学习锦囊

📖 相关公式与知识点:

  • 中断 vs 异常
    • 外部中断:I/O 中断、时钟中断。
    • 内中断(异常):陷阱(Trap)、故障(Fault,如缺页)、终止(Abort)。 ::::
🔄 举一反三
  1. 缺页中断属于( )。
    • A. 外部中断
    • B. 陷阱 (Trap)
    • C. 故障 (Fault)
    • D. 终止 (Abort)
      查看练习答案与解析

      答案:C 解析:故障是可以被修复并重新执行原指令的异常。

      :::: :::::

13、在下列内存管理方式中,可能会产生内部碎片的管理方式有( )。

Ⅰ.固定分区分配 Ⅱ. 页式存储管理 Ⅲ. 段式存储管理 Ⅳ. 段页式存储管理 Ⅴ. 采用首次适应算法的可变分区分配 Ⅵ.采用最佳适应算法的可变分区分配

A. Ⅰ、Ⅱ、Ⅲ、Ⅴ B. Ⅰ、Ⅱ、Ⅳ C. Ⅱ、Ⅳ、Ⅴ D. Ⅲ、Ⅴ、Ⅳ

查看答案与解析

答案:B

解析:

  • 内部碎片:指已分配给某进程的存储空间中,有部分未被利用。
    • Ⅰ.固定分区:分区大小固定,小作业占用大分区时产生。
    • Ⅱ.页式存储:进程的最后一页通常无法占满一个物理块(产生页内碎片)。
    • Ⅳ.段页式存储:在段内采用分页,因此同样存在页内碎片。
  • 外部碎片:指内存中因容量太小而无法分配给新作业的零散空闲块。
    • Ⅲ.段式存储Ⅴ/Ⅵ.可变分区:都会产生外部碎片。

因此,会产生内部碎片的是 Ⅰ、Ⅱ、Ⅳ,选 B。


难度: ⭐ 考点: #内存管理方式 #内部碎片 #外部碎片

💡 学习锦囊

📖 相关公式与知识点:

  • 碎片对比
    • 内部碎片:分配给进程但未使用的空间。
    • 外部碎片:未分配但太小无法使用的零散空间。 ::::
🔄 举一反三
  1. 动态分区分配算法中,最容易产生极小的、无法利用的外部碎片的是( )。
    • A. 首次适应算法 (First Fit)
    • B. 最佳适应算法 (Best Fit)
    • C. 最坏适应算法 (Worst Fit)
    • D. 循环首次适应算法 (Next Fit)
      查看练习答案与解析

      答案:B 解析:最佳适应算法总是寻找最匹配的空闲块,容易留下极小的零头(外部碎片)。

      :::: :::::

14、系统为某进程分配了 4 个页框,该进程已访问的页号序列为 2,0,2,9,3,4,2,8,2,4,8,4,5。若进程要访问的下一页的页号为 7,依据 LRU 算法,应淘汰页的页号是( ) 。

A.2 B.3 C.4 D.8

查看答案与解析

答案:A

解析: **LRU(最近最久未使用)**置换算法的核心是淘汰在最近一段时间里最久没有被访问的页面。

第一步:列出当前内存中的 4 个页面根据题目给出的历史访问序列,从当前位置(刚访问完 5)**向左(倒序)**追踪每个页面最后一次出现的位置:

  • 页面 5:刚刚访问过(当前位置)。
  • 页面 4:倒数第 2 个被访问。
  • 页面 8:倒数第 3 个被访问。
  • 页面 2:倒数第 4 个被访问。

此时内存中的 4 个页面正是 [2, 4, 8, 5]

第二步:确定最久未访问的页面 从当前时间点向后看,这 4 个页面按“最近访问”从新到旧排序为: $5 \rightarrow 4 \rightarrow 8 \rightarrow 2$。 可见,页面 2 是最近最久未被访问的,因此应当被淘汰。


难度: ⭐⭐ 考点: #LRU置换算法 #页面置换

💡 学习锦囊

📖 相关公式与知识点:

  • LRU 置换算法:最近最久未使用。
  • FIFO 置换算法:先进先出,易产生 Belady 异常。
🔄 举一反三
  1. 针对上述相同的访问序列,若采用 FIFO(先进先出) 算法,在访问页面 7 时应当淘汰哪个页面?
    查看练习答案与解析

    答案:3 解析:追踪各页进入内存的顺序:2入 $\rightarrow$ 0入 $\rightarrow$ 9入 $\rightarrow$ 3入 $\rightarrow$ 4汰0入 $\rightarrow$ 2命中 $\rightarrow$ 8汰9入 $\rightarrow$ 5汰3入(注意 3 最早)。在 7 访问前,3 已被淘汰,此处稍作替换即可。

15、使用 ls -l | grep "^p"命令可以找到目录下的( )文件。

A. FIFO 文件 B. 软链接文件 C. 套接字文件 D. 块设备文件

查看答案与解析

答案:A

**解析:**在 Linux 的 ls -l 详细列表输出中,每行最开头的字符代表文件类型:

  • -:普通文件
  • d:目录文件
  • p:命名管道文件(FIFO)
  • l:符号链接文件(Soft Link)
  • b:块设备文件(Block)
  • c:字符设备文件(Character)
  • s:套接字文件(Socket)

正则表达式 ^p 匹配以字符 p 开头的行,故筛选出的是 FIFO 文件。


难度: ⭐ 考点: #Linux文件类型 #ls命令

💡 学习锦囊

📖 相关公式与知识点:

  • Linux 文件属性d 目录,- 普通文件,l 链接,p 管道,s 套接字。
🔄 举一反三
  1. 使用 ls -l 命令查看文件,若开头属性为 l,代表( )。
    • A. 普通文件
    • B. 软链接文件
    • C. 管道文件
    • D. 套接字文件
      查看练习答案与解析

      答案:B

      :::: :::::

16、Linux系统中 i节点也是一种资源,管理i节点的分配 and 回收是采用( )。

A. 空闲表法 B. 空闲链表法 C. 位示图法 D. 成组链接法

查看答案与解析

答案:C

解析:

  • C项正确:在 Linux(如 ext2/ext3/ext4)文件系统中,inode 和数据块的分配与回收都是通过 Bitmap(位示图法) 来管理的。用一位二进制的 0 或 1 代表一个 inode 的空闲与占用状态。
  • D项:成组链接法(Group Linking)常用于 UNIX System V 文件系统中管理磁盘空闲块,但 Linux 默认并不采用该方式管理 inode。

难度: ⭐ 考点: #磁盘空间管理 #位示图 #inode管理

💡 学习锦囊

📖 相关公式与知识点:

  • 文件分配方式:连续分配、链接分配、索引分配。
  • 空闲空间管理:空闲表、空闲链表、位示图、成组链接。
🔄 举一反三
  1. 位示图法在进行盘块分配时,若某字长为 32 位,第 2 个字的第 5 位(从 0 开始)对应的物理块号是( )。
    • A. 36
    • B. 37
    • C. 38
    • D. 35
      查看练习答案与解析

      答案:B 解析:第 0 个字(0-31),第 1 个字(32-63)。第 2 个字的第 5 位表示 $32 \times 1 + 5 = 37$(若字号块号均从 0 开始)。

      :::: :::::

17、以下磁盘调度算法中不存在“磁臂粘着”问题的是( )。

A. FCFS B. SSTF C. SCAN D. CSCAN

查看答案与解析

答案:A

解析:

  • 磁臂粘着(Arm Stickiness):指当系统不断涌入针对当前磁道(或邻近磁道)的访问请求时,磁头会长期停留在该区域,导致其他磁道的请求被无限期推迟(发生饥饿)。
  • B、C、D项:均基于“就近服务”原则,极易发生磁臂粘着。
  • A项(FCFS):严格按照请求到达的先后顺序进行服务,不考虑物理距离,因此绝对不会发生磁臂粘着。

难度: ⭐ 考点: #磁盘调度算法 #磁臂粘着 #饥饿现象

💡 学习锦囊

📖 相关公式与知识点:

  • 磁盘调度算法
    • FCFS: 公平,寻道时间长。
    • SSTF: 寻道时间短,可能饥饿。
    • SCAN: 兼顾寻道与公平,磁头单向移动。 ::::
🔄 举一反三
  1. 旨在减少磁头单向移动时两端请求等待时间差异的磁盘调度算法是( )。
    • A. SSTF
    • B. SCAN
    • C. C-SCAN
    • D. FCFS
      查看练习答案与解析

      答案:C 解析:循环扫描(C-SCAN)只在单向提供服务,返回时不处理请求,消除了两端请求的不公平性。

      :::: :::::

18、Linux支持多种文件系统,光盘使用的是( )。

A. ext4 B. vfat C. iso9660 D. cd-rom

查看答案与解析

答案:C

解析:

  • C项正确ISO 9660 是国际标准化组织为光盘(CD-ROM)制定的标准文件系统格式。
  • A项 ext4:Linux 系统的默认日志文件系统。
  • B项 vfat:用于兼容 Windows FAT32 格式。
  • D项 cd-rom:代表硬件设备名称,并非文件系统格式。

难度: ⭐ 考点: #Linux文件系统 #ISO9660

💡 学习锦囊

📖 相关公式与知识点:

  • 常见文件系统:ext4 (Linux), NTFS (Windows), ISO 9660 (光盘), FAT32/vfat.
🔄 举一反三
  1. 在 Linux 中,用于挂载文件系统的命令是( )。
    • A. mount
    • B. umount
    • C. fdisk
    • D. mkfs
      查看练习答案与解析

      答案:A

      :::: :::::

19、 以下关于文件结构的说法中正确的是( )。

A. 顺序文件必须采用连续分配的物理结构。 B. 多线程并发下载 and 断点续传要求服务器使用随机存取的方法。 C. 索引顺序文件应该采用多级索引文件组织外存。 D. 直接文件的哈希值存储在混合索引文件的直接地址项中。

查看答案与解析

答案:B

解析:

  • A项错误:顺序文件既可以采用连续分配,也可以采用链式分配(显式/隐式链接)实现。
  • B项正确:断点续传与并发下载需要从文件的指定字节偏置处直接读取数据(Seek 操作),这要求底层文件系统必须支持随机存取(Random Access)
  • C、D项:属于概念张冠李戴。

难度: ⭐⭐ 考点: #文件逻辑结构 #文件物理结构 #随机存取

💡 学习锦囊

📖 相关公式与知识点:

  • 存取方式
    • 顺序存取:从头读到尾。
    • 随机存取:直接访问任意记录(如 Seek 操作)。 ::::
🔄 举一反三
  1. 适合于建立特大文件且存取速度最快的物理文件结构是( )。
    • A. 隐式链接文件
    • B. 显式链接文件
    • C. 索引文件
    • D. 连续文件
      查看练习答案与解析

      答案:D 解析:连续分配支持极快的顺序读写。

      :::: :::::

20、在一般大型计算机系统中,主机对外围设备的控制可通过通道、控制器 and 设备三个层次来实现。关于三者说法正确的是( )

A. 控制器控制通道,设备在通道控制下工作 B. 通道控制控制器,设备在控制器控制下工作 C. 控制器 and 通道分别控制设备 D. 控制器控制通道 and 设备的工作

查看答案与解析

答案:B

**解析:**在计算机 I/O 系统的四级结构中(CPU $\rightarrow$ 通道 $\rightarrow$ 控制器 $\rightarrow$ 设备),它们的层级隶属关系为:

  1. CPU 向通道发出 I/O 指令。
  2. 通道根据通道程序去控制控制器
  3. 控制器直接向物理设备发送微操作电信号。

因此,通道控制控制器,设备在控制器控制下工作,选 B。


难度: ⭐ 考点: #I/O控制层次 #通道 #控制器

💡 学习锦囊

📖 相关公式与知识点:

  • I/O 控制方式演进:程序直接控制 $\rightarrow$ 中断驱动 $\rightarrow$ DMA $\rightarrow$ 通道。
🔄 举一反三
  1. 引入通道的主要目的是( )。
    • A. 提高 CPU 的处理速度
    • B. 提高 CPU 与 I/O 设备之间的并行程度
    • C. 减少 I/O 设备的等待时间
    • D. 增加外设数量
      查看练习答案与解析

      答案:B 解析:通道相当于专用的 I/O 处理机,将 CPU 从繁重的 I/O 事务中解放出来。

      :::: :::::

21、计算机系统启动外部设备是按( )来启动的。

A. 设备名

B. 设备相对号

C. 设备绝对号

D. 通道号

查看答案与解析

答案:C

**解析:**在操作系统底层,当 CPU 需要启动某个外围设备进行 I/O 操作时,必须通过硬件地址准确寻址该设备。

  • 设备绝对号:是设备在全系统中的唯一物理硬件编号,供系统内核及通道程序直接识别。
  • 用户程序通常使用逻辑设备名,而操作系统会将其翻译为设备绝对号来真正启动设备。

难度: ⭐⭐ 考点: #设备寻址 #设备绝对号 #逻辑设备

💡 学习锦囊

📖 相关公式与知识点:

  • 逻辑设备与物理设备:通过“逻辑设备表(LUT)”进行映射,屏蔽硬件差异。
🔄 举一反三
  1. 用户程序中使用的设备名称通常是( )。
    • A. 物理设备名
    • B. 逻辑设备名
    • C. 设备绝对号
    • D. 设备相对号
      查看练习答案与解析

      答案:B 解析:逻辑设备名提高了程序的可移植性。

      :::: :::::

22、对磁盘进行移臂调度的目的是为了缩短( )时间。

A. 寻道

B. 延迟

C. 传送

D. 启动

查看答案与解析

答案:A

**解析:**磁盘访问的总时间主要由三部分组成:

  1. 寻道时间(Seek Time):磁头移动到指定磁道所需的时间。
  2. 旋转延迟时间(Rotational Delay):扇区旋转到磁头下方的时间。
  3. 数据传输时间(Transfer Time):读写数据的时间。

移臂调度(如 SSTF, SCAN)专门针对磁头的物理移动进行优化,其核心目的正是为了缩短寻道时间(寻道时间通常在磁盘访问中占比最大)。


难度: ⭐ 考点: #磁盘访问时间 #寻道时间 #移臂调度

💡 学习锦囊

📖 相关公式与知识点:

  • $\text{总访盘时间} = \text{寻道时间} + \text{旋转延迟} + \text{传输时间}$
🔄 举一反三
  1. 磁盘调度中,主要用于缩短“旋转延迟时间”的调度算法是( )。
    • A. 先来先服务
    • B. 旋转调度(如最少旋转距离优先)
    • C. 最短寻道时间优先
    • D. 电梯调度
      查看练习答案与解析

      答案:B

      :::: :::::

23、通过操作系统对外围设备的管理实现了“设备处理的一致性”。这种“一致性”是指( )。

A. 外围设备硬件的处理一致性 B. 通道硬件设计的处理一致性 C. 通道程序设计的处理一致性 D. 用户可不考虑设备的具体物理特性

查看答案与解析

答案:D

解析: 操作系统通过引入设备独立性软件层,向用户程序提供了统一的、抽象的系统调用接口(如 read, write)。 用户在编写程序时,只需要调用统一的接口,而无需关心底层具体使用的是什么物理设备(如磁盘、光盘还是 U 盘),这就实现了“设备处理的一致性”。


难度: ⭐ 考点: #设备独立性 #设备无关性

💡 学习锦囊

📖 相关公式与知识点:

  • 设备独立性软件:负责统一命名、保护、分配、释放及错误处理。
🔄 举一反三
  1. 设备无关性带来的核心好处是( )。
    • A. 极大提高 I/O 传输速度
    • B. 方便进行 I/O 重定向
    • C. 减少内存占用
    • D. 彻底避免死锁
      查看练习答案与解析

      答案:B

      :::: :::::

24、通道是一种( )。

A. I/O 端口

B. 数据通道

C. I/O 专用处理机

D. 软件工具

查看答案与解析

答案:C

解析:

  • C项正确通道(I/O Channel) 是独立于 CPU 的、专门用来负责输入输出控制的硬件处理机。它拥有自己的指令系统(通道指令),受 CPU 委托执行通道程序,与内存直接交换数据。
  • 它的引入彻底将 CPU 从繁重的低速 I/O 操作中解放出来。

难度: ⭐ 考点: #通道技术 #I/O控制方式

💡 学习锦囊

📖 相关公式与知识点:

  • 通道指令:也称通道命令(CCW),由通道处理机执行的操作码。
🔄 举一反三
  1. 通道控制方式与 DMA 控制方式的主要区别在于( )。
    • A. 通道可以控制多台设备且具备专用指令系统
    • B. DMA 速度更快
    • C. 通道由软件实现
    • D. DMA 属于软件层
      查看练习答案与解析

      答案:A

      :::: :::::

25、操作系统采用缓冲技术,能够减少对CPU的( )次数,从而提高资源的利用率。

A. 中断

B. 访问

C. 控制

D. 依赖

查看答案与解析

答案:A

解析: 在 I/O 过程中,由于外设速度极慢,如果每传输一个字符就触发一次中断,CPU 将被频繁打断。 引入**缓冲区(Buffer)**后,外设可以将数据填满整个缓冲区后,仅在缓冲区满时向 CPU 发出一次中断请求。这极大地减少了 CPU 被中断的次数,缓解了 CPU 与外设速度不匹配的矛盾。


难度: ⭐⭐ 考点: #缓冲技术 #中断机制 #速度匹配

💡 学习锦囊

📖 相关公式与知识点:

  • 缓冲技术:单缓冲、双缓冲、循环缓冲、缓冲池。
🔄 举一反三
  1. 引入单缓冲技术后,设从磁盘读入缓冲区时间为 $T$,从缓冲区传至用户区时间为 $M$,CPU 处理时间为 $C$。则处理单块数据的总时间为( )。
    • A. $T+M+C$
    • B. $\max(T, C) + M$
    • C. $\max(T, M) + C$
    • D. $T+\max(M, C)$
      查看练习答案与解析

      答案:B 解析:磁盘读入与 CPU 处理可以并行,耗时为 $\max(T, C)$,传输时间 $M$ 必须串行。

      :::: :::::

二、 综合题(共 75 分)

1、(6分)操作系统从多道批处理系统发展到现在的分时操作系统,主要解决什么问题?需要哪些技术的支持才能发展形成分时操作系统?请分析。

查看答案与解析

答案:

  1. 主要解决的问题: 多道批处理系统虽然实现了资源的高效利用,但存在缺乏人机交互性的致命缺点。用户提交作业后便无法干预其运行,调试极其不便。分时操作系统主要解决了人机交互多用户独占性体验的问题。
  2. 需要的核心技术支持
    • 时钟中断技术:保证任何一个作业都不能无限期占用 CPU,通过时间片强制剥夺。
    • 多道程序设计技术:支持内存中同时存放多道程序。
    • 人机交互终端技术:支持多终端并发输入与缓冲区管理。

难度: ⭐⭐ 考点: #操作系统演进 #分时系统 #人机交互

💡 学习锦囊

📖 相关公式与知识点:

  • 分时系统特征:多路性、交互性、独占性、及时性。
🔄 举一反三
  1. 分时操作系统追求的首要设计目标是( )。
    • A. 提高资源利用率
    • B. 快速的响应时间
    • C. 增加系统吞吐量
    • D. 保证任务截止时间
      查看练习答案与解析

      答案:B

      :::: :::::

2、(14分)有 A、B两人通过信箱进程辩论,每个人都从自己的信箱中取得对方的问题,将答案 and 向对方提出的新问题组成一个邮件放入对方的邮箱中。假设 A 的信箱最多存放 M 个邮件,B 的信箱最多存放 N 个邮件。初始时 A 的信箱中有 $x$$( 0 < x < M )$ )个邮件,B的信箱中有 y(0<y<N)个。辩论者每次去取出一个邮件,邮件数量减 1。当邮箱不为空时,辩论者才能从信箱中取邮件,否则等待。当信箱不满时,辩论者才能将新邮件放入信箱,否则等待。请完成以下任务:

(1)分析互斥 and 同步问题, (2)用信号量的 P、V操作实现 A and B的并发执行过程,要求写出完成过程,并说明信号量的含义 and 初始值。

查看答案与解析

答案:

(1)问题分析:

  • 互斥关系:信箱 A 和信箱 B 作为共享数据结构(临界资源),在读写指针修改时需要互斥访问。
  • 同步关系
    • 信箱 A:A 取邮件受 A 中邮件数限制(非空);B 存邮件受 A 的剩余空间限制(非满)。
    • 信箱 B:B 取邮件受 B 中邮件数限制(非空);A 存邮件受 B 的剩余空间限制(非满)。

(2)信号量设置与 PV 代码实现:

信号量定义:

  • mutexA: 互斥信号量,用于保护信箱 A 的读写操作,初值为 1。
  • mutexB: 互斥信号量,用于保护信箱 B 的读写操作,初值为 1。
  • emptyA: 信箱 A 的空位数,初值为 $M - x$
  • fullA: 信箱 A 的当前邮件数,初值为 $x$
  • emptyB: 信箱 B 的空位数,初值为 $N - y$
  • fullB: 信箱 B 的当前邮件数,初值为 $y$

代码实现:

c
// 辩论者 A 进程
void Debater_A() {
    while(1) {
        P(fullA);      // 检查信箱 A 是否有邮件
        P(mutexA);     // 互斥锁定信箱 A
        从信箱 A 中取出一个邮件;
        V(mutexA);
        V(emptyA);     // 释放信箱 A 的一个空位

        思考并撰写新回复;

        P(emptyB);     // 检查信箱 B 是否有空位
        P(mutexB);     // 互斥锁定信箱 B
        将新邮件放入信箱 B;
        V(mutexB);
        V(fullB);      // 增加信箱 B 的邮件计数
    }
}

// 辩论者 B 进程
void Debater_B() {
    while(1) {
        P(fullB);      // 检查信箱 B 是否有邮件
        P(mutexB);     // 互斥锁定信箱 B
        从信箱 B 中取出一个邮件;
        V(mutexB);
        V(emptyB);     // 释放信箱 B 的一个空位

        思考并撰写新回复;

        P(emptyA);     // 检查信箱 A 是否有空位
        P(mutexA);     // 互斥锁定信箱 A
        将新邮件放入信箱 A;
        V(mutexA);
        V(fullA);      // 增加信箱 A 的邮件计数
    }
}

难度: ⭐⭐⭐ 考点: #进程同步 #PV操作 #生产者消费者模型变种

💡 学习锦囊

📖 相关公式与知识点:

  • 信号量操作
    • $P(S)$$S = S - 1$,若 $S < 0$ 则进程阻塞。
    • $V(S)$$S = S + 1$,若 $S \leq 0$ 则唤醒一个进程。 ::::
🔄 举一反三
  1. 经典的生产者-消费者问题中,缓冲区大小为 N,其 empty 信号量的初值应设为( )。
    • A. 0
    • B. 1
    • C. N
    • D. N-1
      查看练习答案与解析

      答案:C

      :::: :::::

3、(11 分)

作业运行情况

作业名到达时间运行时间优先数
18:0040分钟5
28:2030分钟3
38:3050分钟4
48:5020分钟6

有一个具有两道作业的批处理系统,作业调度采用短作业优先调度算法,进程调度

采用抢占式优先级调度算法。作业的运行情况如上表所示,其中作业的优先数即为进程的优先数,优先数越小,优先级越高。请回答以下问题:

(1)列出所有作业进入内存的时间及结束的时间(以分钟为单位) (2)计算平均周转时间。

查看答案与解析

答案:

**(1)作业生命周期追踪推导:**系统容量为 2(即内存中最多同时容纳 2 道作业)。

  • 8:00作业 1 到达,内存空闲。作业 1 进入内存(占用道1),开始执行。
  • 8:20作业 2 到达,内存空闲。作业 2 进入内存(占用道2)。
    • 进程调度:作业 1 优先数为 5,作业 2 优先数为 3(优于1)。作业 2 抢占 CPU,作业 1 挂起。
  • 8:30:作业 3 到达,内存已满,在外存等待。
  • 8:50
    • 作业 2 运行了 30 分钟完毕,退出内存。
    • 外存有作业 3(50分钟)和 4(20分钟)。
    • 作业调度(SJF):选短的,作业 4 进入内存
    • 此时内存有作业 1 和 4。优先数 5 > 6,作业 1 恢复执行
  • 9:10
    • 作业 1 补足剩下的 20 分钟运行完毕,退出内存。
    • 外存唯一的 作业 3 进入内存
    • 此时内存有 3 和 4。优先数 4 > 6,作业 3 执行
  • 10:00:作业 3 运行 50 分钟完毕,退出。作业 4 开始执行
  • 10:20:作业 4运行完毕。

总结列表:

作业名进入内存时刻结束时刻
18:009:10
28:208:50
39:1010:00
48:5010:20

(2)平均周转时间计算:$\text{周转时间} = \text{结束时间} - \text{到达时间}$

  • 作业 1: $9:10 - 8:00 = 70\text{ min}$
  • 作业 2: $8:50 - 8:20 = 30\text{ min}$
  • 作业 3: $10:00 - 8:30 = 90\text{ min}$
  • 作业 4: $10:20 - 8:50 = 90\text{ min}$
$$\text{平均周转时间} = \frac{70 + 30 + 90 + 90}{4} = 70 \text{ 分钟}$$

难度: ⭐⭐⭐ 考点: #作业调度(SJF) #进程调度(抢占式优先级) #周转时间

💡 学习锦囊

📖 相关公式与知识点:

  • 周转时间计算
    • 周转时间 = 结束时间 - 到达时间
    • 带权周转时间 = 周转时间 / 运行时间 ::::
🔄 举一反三
  1. 若将进程调度改为“非抢占式优先级”,则作业 1 何时运行完毕?
    查看练习答案与解析

    答案:8:40。作业 1 会一口气执行完再轮到其他作业。

4、(11 分)Linux 系统采用伙伴系统为进程分配连续的内存块,并使用 free_area[]数组记录各空闲块链表情况。某系统页面大小为 4KB,物理内存共 1GB,某时刻系统内存使用情况如下图所示,请回答下面的问题:

(1)如果要为进程 P1分配连续 of 200个块,请说明分配过程及分配结果(从空闲块的低地址部分进行分配),并画出分配完成后 free_area[]中各元素所对应的空闲块链表情况。 (2)在(1)的基础上,若进程 PB运行完成退出系统,需要回收 PB所占据的内存空间,画出回收完成后free_area[]中各元素所对应的空闲块链表情况。 (3)伙伴系统在回收内存空间时,需要查找其伙伴块是否空闲以便合并。请设计一个能快速判断其伙伴块是否空闲的算法,并进行详细说明。

查看答案与解析

答案:

初始状态分析:

  • 页面大小为 4KB,1GB 物理内存共 256K 个页框。
  • 初始空闲块分布:
    • 8M - 12M (4MB, 1024页, Order 10)
    • 40M - 48M (8MB, 2048页, Order 11)
    • 56M - 1G (968MB),拆分为:
      • 56M - 64M (8MB, Order 11)
      • 64M - 128M (64MB, Order 14)
      • 128M - 256M (128MB, Order 15)
      • 256M - 512M (256MB, Order 16)
      • 512M - 1024M (512MB, Order 17)

(1)为 P1 分配 200 个块:

  • 需求:200 块,最接近且大于 200 的 $2^k$$2^8 = 256$ 块(Order 8,大小 1MB)。
  • 分配过程
    1. 检查 free_area[8]free_area[9] 均为空。
    2. 找到 free_area[10] 中的空闲块 [8M - 12M]
    3. [8M - 12M] 分裂为两块 2MB:[8M - 10M][10M - 12M](挂入 Order 9)。
    4. [8M - 10M] 再分裂为两块 1MB:[8M - 9M](分配给 P1)和 [9M - 10M](挂入 Order 8)。
  • 分配结果:P1 占用物理地址 8M - 9M
  • free_area[] 剩余情况
    • Order 8: [9M - 10M]
    • Order 9: [10M - 12M]
    • Order 11: [40M - 48M], [56M - 64M]
    • Order 14: [64M - 128M]
    • Order 15: [128M - 256M]
    • Order 16: [256M - 512M]
    • Order 17: [512M - 1024M]

(2)回收 PB(12M - 16M,大小 4MB,Order 10):

  • PB 的伙伴块为 [8M - 12M]。但由于该伙伴块已被 P1 占用一部分,无法进行合并。
  • 结果:PB 块直接挂入 free_area[10]
  • free_area[] 最终情况
    • 在(1)的基础上,新增 Order 10: [12M - 16M]

(3)快速判断伙伴块算法设计:

  • 设当前回收块起始页号为 $P$,阶数为 $k$,其伙伴块起始页号为 $P \oplus 2^k$
  • 算法:利用 struct page 描述符中的 flags 标志位(如 PG_buddy)表示块是否空闲,并在 private 字段记录该块所在的 order。当回收时,直接计算出伙伴的页描述符指针,若其 PG_buddy=1order=k,则判定为空闲,可进行合并。

难度: ⭐⭐⭐ 考点: #伙伴系统 #内存分配与回收 #位运算

💡 学习锦囊

📖 相关公式与知识点:

  • 伙伴算法合并条件:大小相同、地址连续、起始地址必须是块大小的整数倍。
🔄 举一反三
  1. 伙伴系统中,大小为 32KB 的块,其对应的 Order 是( )。
    • A. 2
    • B. 3
    • C. 4
    • D. 5
      查看练习答案与解析

      答案:B 解析$32\text{KB} / 4\text{KB} = 8 = 2^3$

      :::: :::::

5、(13 分)某计算机系统按字节编址,逻辑地址 and 物理地址都是 32 位,采用二级页表存储管理方式,页目录项 and 页表项大小都是 4 字节,逻辑地址结构为:

页目录号(10位)页表索引(10位)页内偏移量(12位)

请回答下列问题:

(1)若逻辑地址为 LA,分别给出其对应的页目录号 and 页表索引的表达式。 (2)假设有一个进程,它的一个代码段起始逻辑地址为 0000 8000H,该代码段的长度为 12KB,被装载到从物理地址 0100 0000H开始的连续主存空间中。页目录从主存 0010 0000H开始的物理地址处连续存放,页表从主存 0020 0000H开始的物理地址处连续存放,如下图所示(地址大小自下向上递增):

物理内存

0100 0000H进程代码页面2
进程代码页面1
进程代码页面0
0020 0000H进程页表
0010 0000H进程页目录
0000 0000H

请计算下列信息:

1)该代码段对应的页目录项的物理地址是多少? 2)该代码段对应的三个页表项的物理地址分别是多少? 3)该代码段对应的三个页表项中的页框号分别是多少?; 4)进程代码段页面 1 的起始物理地址是多少?

查看答案与解析

答案:

(1)位运算表达式:

  • 页目录号:$\text{Dir} = (\text{LA} >> 22) \& \text{0x3FF}$
  • 页表索引:$\text{Index} = (\text{LA} >> 12) \& \text{0x3FF}$

(2)物理地址推导: 逻辑地址 0000 8000H $\Rightarrow$ 二进制高 10 位为 0(页目录号),中间 10 位为 00 0000 1000B = 8(页表索引)。

  1. 页目录项物理地址: 页目录基址 (0010 0000H) + $\text{页目录号}(0) \times 4\text{B} = \text{0010 0000H}$
  2. 三个页表项物理地址: 12KB 分为 3 页,页表索引依次为 8, 9, 10。
    • 页面 0:0020 0000H + $8 \times 4 = \text{0020 0020H}$
    • 页面 1:0020 0000H + $9 \times 4 = \text{0020 0024H}$
    • 页面 2:0020 0000H + $10 \times 4 = \text{0020 0028H}$
  3. 三个页表项中的页框号: 对应装载的物理地址 0100 0000H, 0100 1000H, 0100 2000H
    • 页框号依次为:01000H, 01001H, 01002H
  4. 页面 1 起始物理地址$\text{0100 1000H}$

难度: ⭐⭐⭐ 考点: #二级页表 #逻辑地址转换 #页框号

💡 学习锦囊

📖 相关公式与知识点:

  • 地址转换$\text{物理地址} = \text{页框号} \times \text{页大小} + \text{页内偏移}$
🔄 举一反三
  1. 在上述系统中,一个页表项最大可寻址的物理内存大小是( )。
    • A. 4KB
    • B. 4MB
    • C. 4GB
    • D. 16GB
      查看练习答案与解析

      答案:C 解析:32位地址空间最大支持 4GB。

      :::: :::::

6、(10 分)磁盘文件 F 由 190 条记录组成,记录从 1 开始编号,请回答下列问题。

(1)若文件系统采用连续分配方式,用户打开文件后,欲将内存中的一条记录插入到文件 F 中,作为其第 30 条记录。文件 F 存储区域前后均有足够的空闲磁盘空间,每磁盘块存放一条记录,则完成上述插入操作最少需要访问多少次磁盘块?F 的文件控制块内容会发生哪些改变? (2)若文件系统采用 FAT 链接分配方式(FAT 表已经位于内存),每个磁盘块存放 20条记录,假设 F文件占用的磁盘块序列是 35,110,310,160,91,85,210,165,576,441,用户打开文件后,欲将内存中的一条记录插入到文件 F 中,作为其第130 条记录。则完成上述插入操作需要访问哪些磁盘块?共访问几次磁盘块? (3)完成 2)中插入记录的操作时,若磁道从 0 开始编号,每个磁道存放 10 个磁盘块,磁头当前位置 50号磁道,请计算寻道距离是多少?

查看答案与解析

答案:

(1)连续分配下的插入:

  • 最优策略为向前移动记录(1-29 条记录向前挪 1 块)。
  • 访问次数:读 29 次 + 写 29 次 + 写入新记录 1 次 = 59 次
  • FCB 改变:文件起始块号减 1,文件长度加 1。

(2)FAT 链接分配下的插入:

  • 第 130 条记录位于第 7 块(块号 210)。
  • 插入导致后续记录连锁溢出,需要依次读出并修改写回后续所有数据块。
  • 访问磁盘块:210, 165, 576, 441(及新分配的末尾块)。
  • 访问次数:读 4 次 + 写 5 次 = 9 次

(3)寻道距离计算:

  • 访问磁道依次为:$50 \rightarrow 21 \rightarrow 16 \rightarrow 57 \rightarrow 44$
  • 距离 $= |50-21| + |21-16| + |16-57| + |57-44| = 29 + 5 + 41 + 13 = \mathbf{88}$

难度: ⭐⭐⭐ 考点: #文件物理结构 #磁盘访问次数 #寻道距离

💡 学习锦囊

📖 相关公式与知识点:

  • 连续分配:顺序访问极快,插入删除困难。
  • FAT(文件分配表):静态链表,存储在内存中可大幅减少寻道。
🔄 举一反三
  1. 在 FAT 文件系统中,若 FAT 表已全部加载到内存,则读取文件第 100 个磁盘块需要访问磁盘( )次。
    • A. 0
    • B. 1
    • C. 100
    • D. 101
      查看练习答案与解析

      答案:B 解析:FAT 在内存中可直接定位目标块号,只需 1 次读盘即可获取数据。

      :::: :::::

7、(10分)某 Linux系统中采用 ext4的文件系统 and 多级目录,根目录常驻内存,磁盘块大小 512B,目录项由文件名 14B and i 节点号 2B 组成,索引块中盘块号大小 4B。用 户 usera 目 录 的路径 名 是 /usr/home/usera, 用 户 userb 目 录的 路 径 名是/home/userb。usera 在其目录下创建了目录文件 asdf and 普通文件 my.c,并在 asdf目录下创建了普通文件 file1 and file2;userb 在其目录下创建了目录文件 asdf and 普通文件 hust1,并且在目录文件下创建了普通文件 file1 and file2。

(1)画出上述文件系统的目录结构(目录用方框表示,文件用圆框表示)。 (2)若 usera 的 file1 and userb 的 hust1 是同一个文件,file1 文件已经存在,则用户 userb使用什么命令创建的 hust1 文件?如果后来用户 usera 删除了 file1,对 hust1 有何影响? (3)若目录采用线性检索法查找文件,usera要读入自己目录下的file2文件的第7456块,需要访问硬盘多少次?

查看答案与解析

答案:

(1)目录树结构:

      / (根目录)
     /      \
   usr      home
    |        |
   home    userb
    |        |
  usera     asdf —— file1, file2
  /   \      |
my.c  asdf  hust1
       |
     file1, file2

(2)硬链接操作:

  • 命令:ln /usr/home/usera/asdf/file1 /home/userb/hust1
  • 影响:无影响。硬链接仅增加 inode 的引用计数,删除 file1 不会销毁底层数据。

(3)读硬盘次数计算:

  • 目录解析(根在内存):读 usr $\rightarrow$ home $\rightarrow$ usera $\rightarrow$ asdf4次
  • file2 的 Inode:1次
  • 文件索引定位:第 7456 块位于二级间接索引,需读一级、二级索引块及数据块共 3次
  • 总计$4 + 1 + 3 = \mathbf{8次}$

难度: ⭐⭐⭐ 考点: #UNIX索引节点 #目录检索 #硬链接

💡 学习锦囊

📖 相关公式与知识点:

  • 软链接 vs 硬链接
    • 硬链接:共享 inode。
    • 软链接:独立文件,存储目标路径。 ::::
🔄 举一反三
  1. 下列关于硬链接和软链接的说法,正确的是( )。
    • A. 硬链接可以跨文件系统创建
    • B. 删除源文件后,软链接仍然可以正常访问文件内容
    • C. 硬链接与原文件共享同一个 inode
    • D. 软链接会增加目标文件的引用计数
      查看练习答案与解析

      答案:C 解析:硬链接共享 inode(引用计数+1),不可跨文件系统;软链接存储路径,删除源文件后失效。

      :::: :::::
你正在阅读的是会员专属文档,💕 限时特惠进行中
你尚未登录,目前新用户可获3天体验会员,去登录