原文筆記
本課程筆記操作系統 · 43 篇
review202505 答案讲解 02:基本概念 11-20
11. 引入缓冲的目的和种类
题意:
11、引入缓冲的目的,种类。
答案讲解:
按 CH 11 课件,缓冲的基本思想是:在请求发生之前预先执行输入传输,或在输出请求发生之后延后一段时间执行实际输出。引入缓冲的主要目的:
- 缓和 CPU 与 I/O 设备速度不匹配。
- 减少 CPU 被中断的次数。
- 提高 CPU 与设备、设备与设备之间的并行程度。
- 平滑 I/O 需求峰值,解决数据到达速度不稳定的问题。
- 支持记录到块、块到记录等数据格式转换。
Stallings CH 11 明确讲到的常见缓冲种类:
| 类型 | 说明 |
|---|---|
| 单缓冲 | 设置一个缓冲区,结构简单,但并行程度有限 |
| 双缓冲 | 设置两个缓冲区,一个输入或输出,一个处理,提高并行度 |
| 循环缓冲 | 多个缓冲区首尾相接,适合连续数据流 |
| 多缓冲或缓冲池 | 多个缓冲区统一管理,适合更复杂或更高峰值的 I/O 需求 |
核心理解:缓冲的作用是“解耦”。输入设备可以先把数据放入缓冲区,CPU 不必一直等待;输出时 CPU 把数据放入缓冲区后即可继续执行,设备慢慢输出。
12. 文件的物理结构及组织方式
题意:
12、什么是文件的物理结构?有哪几种组织方式?
答案讲解:
文件的物理结构是文件在外存上的存放组织方式,也称文件的存储结构或文件分配方式。它回答的问题是:文件的数据块在磁盘上怎样存放。
常见组织方式:
- 连续分配:文件占用一组连续磁盘块。
- 链接分配:文件块可分散存放,每块保存下一块指针。
- 索引分配:为文件建立索引块,索引块中保存文件各数据块地址。
- 混合索引或多级索引:例如 UNIX inode 中的直接索引、一级间接、二级间接、三级间接。
- 扩展区分配:用一段连续块作为一个 extent,一个文件由一个或多个 extent 组成。
对比:
| 方式 | 优点 | 缺点 |
|---|---|---|
| 连续分配 | 顺序访问快,随机访问也方便 | 文件增长困难,容易产生外部碎片 |
| 链接分配 | 无外部碎片,文件容易增长 | 随机访问差,指针有额外开销 |
| 索引分配 | 随机访问方便,文件可离散存放 | 索引块占空间,小文件可能浪费 |
考试中若问“哪几种组织方式”,一般答“连续、链接、索引”三类即可,再补充多级索引更完整。
13. 文件的逻辑结构及组织方式
题意:
13、什么是文件的逻辑结构?有哪几种组织方式?
答案讲解:
文件的逻辑结构是从用户或应用程序角度看到的文件组织形式,即文件内部记录或字节之间的逻辑关系。它回答的问题是:应用认为文件由什么组成、怎样查找和访问。
按 Stallings 第 12 章,常见文件组织方式包括:
- 堆文件或堆式文件:数据按到达顺序收集,每条记录是一组数据。
- 顺序文件:使用固定记录格式,记录通常按关键字段顺序组织。
- 索引顺序文件:保持顺序文件按关键字段组织的特点,同时增加索引和溢出文件以支持较快查找。
- 索引文件:使用索引结构支持按关键字快速访问,可支持变长记录和多个索引。
- 直接文件或散列文件:根据关键字通过散列函数直接定位记录。
中文操作系统教材还常把文件逻辑结构概括为“无结构字节流文件”和“记录式文件”。若题目问“逻辑结构”,可以先写这两大类;若按 Stallings 的文件组织章节,应补充上面的堆、顺序、索引顺序、索引和直接文件。
逻辑结构和物理结构区别:
| 比较项 | 逻辑结构 | 物理结构 |
|---|---|---|
| 观察角度 | 用户或程序员角度 | 操作系统和磁盘存储角度 |
| 关注问题 | 文件内部信息如何组织 | 文件块在外存上如何存放 |
| 典型形式 | 字节流、记录、堆文件、顺序文件、索引顺序文件、索引文件、直接文件 | 连续、链接、索引分配 |
同一个逻辑文件可以采用不同物理结构存储。例如一个记录文件在磁盘上可以用连续分配,也可以用索引分配。
14. 文件和文件系统
题意:
14、什么是文件和文件系统?
答案讲解:
按 Stallings 第 12 章,文件是相似记录的集合,被用户和应用程序当作一个单一实体处理,并且可以通过名字引用。更一般地说,文件是具有文件名的一组相关信息的集合,是操作系统管理外存数据的基本单位。
文件系统或文件管理系统是向用户和应用程序提供文件使用服务的一组系统软件和数据结构。它向用户提供按文件名访问数据的能力,并负责底层磁盘空间管理。
文件系统的主要功能:
- 文件创建、删除、打开、关闭、读写。
- 目录管理和路径名解析。
- 磁盘空间分配与回收。
- 文件共享和访问控制。
- 文件系统一致性维护和故障恢复。
- 文件属性管理,例如大小、权限、时间戳、所有者。
可这样理解:
文件:用户看到的数据单位
文件系统:管理这些文件、目录和磁盘空间的操作系统模块
15. 设备独立性及实现
题意:
15、什么是设备独立性,它是如何实现的?
答案讲解:
设备独立性是指用户程序使用设备时,不必关心具体物理设备的型号、位置、厂商和驱动细节,只需通过统一的逻辑设备名或统一接口进行 I/O。Stallings 在 I/O 设计目标中把这一思想称为 generality,即希望以统一方式处理各种 I/O 设备。
实现方法:
- 逻辑设备名与物理设备名分离。
- 使用设备驱动程序屏蔽硬件差异。
- 操作系统提供统一 I/O 接口和系统调用。
- 通过设备表维护逻辑设备到物理设备的映射。
- 通过逻辑 I/O 层把设备看作逻辑资源,使用户进程只面对设备标识符和 open、close、read、write 等简单命令。
- 通过缓冲、缓存、SPOOLing 等技术改善设备使用方式。
例子:应用程序只需向“打印机”输出,不需要知道打印机型号、连接端口和控制命令。更换打印机时,只要驱动和逻辑映射正确,应用程序通常不用修改。
设备独立性的意义:
- 提高程序可移植性。
- 简化用户程序设计。
- 便于设备分配、替换和管理。
16. 抖动、地址重定位、碎片、逻辑地址和物理地址
题意:
16、抖动、地址重定位、内部碎片、外部碎片、逻辑地址、物理地址
答案讲解:
这些是存储管理中的基础概念。
| 概念 | 含义 |
|---|---|
| 抖动 | 系统频繁发生页面调入调出,大量时间用于缺页和磁盘 I/O,真正执行用户程序的时间很少 |
| 地址重定位 | 把程序中的逻辑地址转换为实际物理地址的过程 |
| 内部碎片 | 已分配给进程但没有被实际使用的空间 |
| 外部碎片 | 空闲空间总量足够,但被分散成许多小块,无法满足较大连续空间请求 |
| 逻辑地址 | 程序运行时产生的地址,也称虚拟地址或相对地址 |
| 物理地址 | 主存中的真实地址,由地址转换机构转换得到 |
补充理解:
- 分页主要消除外部碎片,但可能产生内部碎片。
- 分段符合逻辑结构,但可能产生外部碎片。
- 虚拟存储系统中,逻辑地址到物理地址的转换通常由 MMU 硬件和操作系统共同完成。
- 抖动常由内存不足、进程过多或页面置换不合理导致。
17. inode 文件共享与符号链接文件共享
题意:
17、比较基于索引节点和基于符号链的文件共享方法
答案讲解:
基于索引节点的共享通常指硬链接。多个目录项指向同一个 inode,文件数据和 inode 只有一份。
基于符号链的共享指创建一个特殊文件,该文件内容保存被链接文件的路径名,也就是符号链接或软链接。
| 比较项 | 基于 inode 的硬链接 | 符号链接 |
|---|---|---|
| 本质 | 多个目录项指向同一个 inode | 一个独立文件,内容是目标路径 |
| 是否增加原文件链接计数 | 增加 | 不增加 |
| 是否可跨文件系统 | 通常不可以 | 可以 |
| 是否可链接目录 | 通常限制较多 | 可以链接目录 |
| 删除原文件名后的影响 | 只要还有硬链接,文件数据仍存在 | 符号链接可能变成悬空链接 |
| 访问开销 | 较小,直接定位 inode | 需要解析路径,开销较大 |
记忆方式:
- 硬链接像“给同一个文件实体起多个名字”。
- 符号链接像“快捷方式”,指向目标路径。
如果删除原文件名,硬链接仍能访问原数据;符号链接可能因为路径目标不存在而失效。
18. 局域网打印机是否是共享设备
题意:
18、办公室只有一台打印机通过局域网为办公室人员提供打印服务。该打印机是共享设备的观点是否正确?为什么?
答案讲解:
这个说法需要区分“物理设备性质”和“用户使用效果”。
从物理设备分类看,打印机不是严格意义上的共享设备,而是独占设备。因为打印机在某一时刻只能打印一个作业,不能让多个作业真正同时使用。
从用户使用效果看,通过局域网打印服务和 SPOOLing 技术,它可以表现为共享设备。多个用户可以同时提交打印任务,系统先把任务放入打印队列,再由打印机逐个输出。
所以更准确的答案是:
打印机物理上是独占设备,逻辑上可通过 SPOOLing 技术被多个用户共享。
答题时不要只写“正确”或“不正确”,应说明原因。若题目强调“打印机是共享设备”这个观点,直接说它是共享设备并不严谨。
19. 快表及其在地址转换中的作用
题意:
19、什么是快表?它在地址转换中起什么作用?
答案讲解:
快表是页表项的高速缓存,英文常称 TLB,即 Translation Lookaside Buffer。Solutions-OS8e 将其解释为保存最近使用过的页表项的 cache。
作用:
- 缓存最近使用过的页表项。
- 地址转换时先查快表,若命中则直接得到页框号。
- 若快表未命中,再访问内存中的页表,并把新页表项装入快表。
- 减少访问页表带来的内存访问次数,提高地址转换速度。
普通分页系统中,访问一个数据通常需要:
访问页表一次 + 访问数据一次
如果快表命中,则页表查询由高速硬件完成,实际只需访问数据所在内存位置,速度明显提高。
快表能有效工作的原因是程序访问具有局部性:
- 时间局部性:最近访问过的页可能很快再次访问。
- 空间局部性:相邻地址可能落在同一页或相邻页中。
20. 进程状态、状态转换原因和相关原语
题意:
20、简述进程的几种状态和引起状态转换的典型原因,以及相关的操作原语。
答案讲解:
常见五状态模型:
- 新建态:进程正在被创建。
- 就绪态:进程已具备运行条件,等待 CPU。
- 运行态:进程正在 CPU 上执行。
- 阻塞态:进程等待某事件,暂时不能运行。
- 终止态:进程运行结束或被撤销。
典型状态转换:
| 转换 | 典型原因 |
|---|---|
| 新建态 -> 就绪态 | 创建完成,被接纳进入就绪队列 |
| 就绪态 -> 运行态 | 调度程序分配 CPU |
| 运行态 -> 就绪态 | 时间片用完、更高优先级进程到来、主动让出 CPU |
| 运行态 -> 阻塞态 | 等待 I/O、等待信号量、等待事件 |
| 阻塞态 -> 就绪态 | I/O 完成、资源可用、事件发生 |
| 运行态 -> 终止态 | 正常结束或异常终止 |
相关操作原语:
| 原语 | 作用 |
|---|---|
| 创建原语 | 创建进程和 PCB |
| 撤销原语 | 终止进程并回收资源 |
| 阻塞原语 | 使运行进程进入阻塞态 |
| 唤醒原语 | 把等待事件完成的进程转为就绪态 |
| 挂起原语 | 把进程移出活动队列或换出内存 |
| 激活原语 | 恢复挂起进程,使其重新参与调度 |
| 调度或切换原语 | 保存当前进程现场,恢复下一个进程现场 |
关键区别:
- 就绪态:没有 CPU,但只要获得 CPU 就能运行。
- 阻塞态:即使给它 CPU 也不能运行,因为它还在等待某事件。