
- 版权声明: 本答案解析仅供个人学习和教学参考使用,版权归原作者及出版社所有,请勿用于商业用途。
- 准确性: 本答案经过精心整理和校对,但由于操作系统概念复杂,不同角度理解可能存在差异,部分答案仅供参考,建议大家以理解概念为主,形成自己的见解。
- 完整性: 限于篇幅,这里无法提供所有章节所有习题的详细答案,但会选取各章最具代表性、最核心的习题进行详细解析,并提供一个章节习题答案的索引,方便大家查找。
第一章:操作系统引论
核心习题解析
什么是操作系统?
参考答案: 操作系统是管理计算机硬件与软件资源的系统软件,它同时也是计算机系统的内核与基石,它位于硬件和用户之间,既为用户提供了方便、友好的接口,也为应用程序运行提供了稳定、安全的运行环境。
从两个角度理解:
- 资源管理器角度: 操作系统是计算机系统资源的管理者,它负责管理CPU、内存、I/O设备等硬件资源,以及文件、数据等软件资源,通过调度、分配、回收等策略,实现资源的高效利用和系统的公平性。
- 扩展机/虚拟机角度: 操作系统是覆盖在硬件之上的一层软件,它为用户和应用程序提供了一个比物理机器功能更强、使用更方便的虚拟机,它通过系统调用等方式,隐藏了硬件的复杂细节,向上层提供了抽象、统一的接口。
操作系统有哪些基本特征?

参考答案: 操作系统有四个最基本的特征:
并发:
- 定义: 两个或多个事件在同一时间间隔内发生,宏观上同时运行,微观上交替执行。
- 关键点: 并发是操作系统最重要的特征,是提高资源利用率、增强系统处理能力的根本原因,操作系统的并发性是通过进程和线程机制实现的。
共享:
- 定义: 系统中的资源可供内存中多个并发执行的进程共同使用。
- 两种共享方式:
- 互斥共享: 资源在一段时间内只允许一个进程访问(如打印机、临界区)。
- 同时访问: 资源在宏观上可以被多个进程同时使用(如磁盘文件、可重入代码)。
虚拟:
(图片来源网络,侵删)
- 定义: 通过某种技术,将一个物理实体变为若干个逻辑上的对应物,这是操作系统提升系统性能和方便性的关键技术。
- 典型例子:
- 虚拟处理器: 通过多道程序设计,让单个CPU在多个进程间快速切换,使得每个进程都感觉自己在独占CPU。
- 虚拟内存: 将程序的一部分装入内存,另一部分放在磁盘上,为用户提供一个比实际物理内存大得多的地址空间。
异步:
- 定义: 在多道程序环境下,多个进程的执行不是一贯到底,而是以“走走停停”的方式进行的,进程以人们不可预知的速度向前推进。
- 原因: 进程的执行速度受其自身程序结构、资源调度、I/O操作等因素影响,导致其执行过程是不确定的。
- 后果: 操作系统必须保证进程运行的“最终结果”是可再现的,即使其执行过程是不可预测的。
分时系统的主要特征是什么?
参考答案: 分时系统允许多个用户通过终端同时使用一台主机,其主要特征是:
- 多路性: 多个终端用户可以同时通过终端系统向主机发出服务请求,系统则通过轮流方式为每个用户服务。
- 交互性: 用户可以通过终端与系统进行人机对话,直接控制、调试自己的程序。
- 独立性: 每个用户都感觉像自己在独占主机,彼此之间互不干扰。
- 及时性: 系统对用户的请求能在很短的时间内(通常为秒级或更短)给予响应。
第二章:进程管理
核心习题解析
试比较进程和程序的区别。
参考答案: 进程和程序是两个密切相关但完全不同的概念,其区别主要体现在以下几个方面:
特征 进程 程序 定义 一个动态的概念,是程序的一次执行过程。 一个静态的概念,是存放在磁盘上的指令和数据的集合。 属性 拥有生命周期(创建、就绪、运行、阻塞、终止)。 是永久的,可以长期存储在介质中。 组成 由程序段、数据段和进程控制块三部分组成。 仅由指令和数据构成。 并发性 核心特征,能与其他进程并发执行。 本身不具备并发性,是进程的执行内容。 资源占用 是系统进行资源分配和调度的基本单位,拥有独立的地址空间和资源。 不占用系统运行时的资源,是进程的“蓝图”。 关系 进程是程序的执行实例,一个程序可以对应多个进程(如多次打开同一个Word)。 程序是进程的静态文本,一个进程至少对应一个程序。
进程有哪三种基本状态?状态之间是如何转换的?
参考答案: 进程通常有以下三种基本状态:
就绪状态:
- 描述: 进程已获得除CPU以外的所有所需资源,一旦分配到CPU即可运行。
- 特点: 进程在等待CPU的调度。
执行状态:
- 描述: 进程已获得CPU,其程序正在CPU上执行。
- 特点: 在单核CPU系统中,任一时刻最多只有一个进程处于执行状态。
阻塞状态:
- 描述: 进程因等待某个事件(如I/O操作完成、等待某个信号量)而暂停运行。
- 特点: 即使分配到CPU,进程也无法继续执行,必须等待事件发生。
状态转换图:
+----------------+ 调度 +----------------+ | 就绪状态 | --------------> | 执行状态 | +----------------+ +----------------+ ^ | | | | | 时间片用完/更高优先级进程到来 | | | | V V +----------------+ 事件发生 +----------------+ | 阻塞状态 | <-------------- | 执行状态 | +----------------+ +----------------+
- 就绪 -> 执行: 由进程调度程序从就绪队列中选中一个进程,并分配CPU。
- 执行 -> 就绪: 正在执行的进程用完时间片,或在可剥夺式调度中被更高优先级的进程抢占。
- 执行 -> 阻塞: 正在执行的进程请求某个暂时无法满足的资源(如读磁盘),主动放弃CPU进入阻塞状态。
- 阻塞 -> 就绪: 阻塞进程等待的事件发生(如I/O完成),此时进程从阻塞状态进入就绪状态,等待再次被调度。
什么是临界区?对临界区的管理应遵循哪些原则?
参考答案:
临界区: 在每个进程中,访问临界资源的那段程序代码被称为临界区,临界资源是一次仅允许一个进程使用的共享资源(如打印机、共享变量)。
管理原则(互斥准则):
- 空闲让进: 当没有进程处于临界区内时,应允许一个请求进入临界区的进程立即进入。
- 忙则等待: 当已有进程处于临界区内时,其他试图进入临界区的进程必须等待。
- 有限等待: 对要求访问临界区的进程,应保证能在有限时间内进入临界区,不能“死等”。
- 让权等待: 当进程不能进入临界区时,应立即释放CPU,避免忙等待,让其他进程有机会运行。
第三章:处理机调度与死锁
核心习题解析
什么是死锁?产生死锁的必要条件是什么?
参考答案:
死锁: 指在多个进程并发执行时,每个进程都持有一些资源,同时又因等待其他进程所持有的资源而陷入无限等待的状态,若无外力作用,这些进程都将无法向前推进。
产生死锁的四个必要条件(必须同时满足):
- 互斥条件: 资源不能被共享,一次只能被一个进程使用。
- 请求和保持条件: 进程已经至少持有一个资源,但又提出了新的资源请求,而该资源已被其他进程占用,此时请求进程阻塞,但对已获得的资源保持不放。
- 不可剥夺条件: 进程已获得的资源,在使用完之前不能被剥夺,只能在使用完后由自己释放。
- 循环等待条件: 存在一个进程等待链 {P0, P1, ..., Pn},其中P0等待P1占用的资源,P1等待P2占用的资源,...,Pn等待P0占用的资源。
如何预防和避免死锁?
参考答案:
预防死锁: 通过破坏死锁的四个必要条件中的至少一个来防止死锁的发生。
- 破坏互斥条件: 尽量让资源可共享(如SPOOLing技术使独占设备变为共享设备),但并非所有资源都能做到。
- 破坏请求和保持条件:
- 静态分配: 进程在运行前一次性申请所有所需资源,若得不到全部资源则不予启动。
- 缺点: 资源利用率低,可能导致进程饥饿。
- 破坏不可剥夺条件: 当一个进程请求新资源而得不到满足时,必须释放已占有的所有资源。
- 缺点: 实现复杂,代价高,可能造成前功尽弃。
- 破坏循环等待条件: 将所有资源进行线性排序,规定进程必须按序请求资源。
- 缺点: 资源利用率可能不高,限制了进程的灵活性。
避免死锁: 在资源的动态分配过程中,用某种方法防止系统进入不安全状态,从而避免死锁。
- 核心思想: 在资源分配前,先进行安全性检查。
- 银行家算法: 一个经典的死锁避免算法,它通过预先声明最大需求,在每次请求时模拟分配,检查系统是否仍处于安全状态,如果安全,则分配;否则,拒绝请求,让进程等待。
- 优点: 允许进程动态申请资源,资源利用率比预防策略高。
- 缺点: 实现复杂,需要额外的开销,且进程必须提前声明其最大资源需求。
第四章:存储器管理
核心习题解析
什么是虚拟存储器?它有哪些基本特征?
参考答案:
虚拟存储器: 一种内存管理技术,它使得应用程序认为它拥有连续的可用内存空间(一个巨大的地址空间),而实际上,它通常被分割成多个物理内存碎片,以及需要时从硬盘空间临时交换的数据,它借助于磁盘等外存来扩大内存的容量。
基本特征:
- 离散性: 虚拟内存的基本特征,程序被分成若干页或段,离散地装入内存的物理块中。
- 多次性: 一个作业可以分成多次调入内存运行,一个程序被分成多个部分,在需要时才装入内存。
- 交换性: 允许在作业运行过程中进行换进和换出,暂时不用的部分换出到外存,需要时再换入。
- 虚拟性: 这是虚拟存储器的最终目标,从用户的角度看,似乎拥有一个巨大的内存空间,这个空间是虚拟的、不连续的、比物理内存大得多的。
分页存储管理和分段存储管理的主要区别是什么?
参考答案:
特征 分页存储管理 分段存储管理 单位 页:大小固定,由系统决定。 段:长度可变,由程序的逻辑结构决定。 对用户 透明:用户看不到页的划分,只需提供线性地址。 可见:用户需要自己定义段,如代码段、数据段。 地址空间 一维:一个线性的地址空间。 二维:由段号和段内偏移量组成。 逻辑意义 无:页的划分与程序逻辑无关,是物理上的划分。 有:段反映了程序的逻辑结构,易于共享和保护。 碎片问题 内部碎片:页内可能有未被利用的空间。 外部碎片:内存中会产生一些无法利用的小空闲块。 共享与保护 共享和保护的单位是页,粒度较粗。 共享和保护的单位是段,粒度更细,更符合逻辑。
第五章:设备管理
核心习题解析
什么是SPOOLing技术?它有什么作用?
参考答案:
SPOOLing (Simultaneous Peripheral Operations On-Line) 技术: 也称为假脱机技术,是一种用高速共享设备(如磁盘)来模拟低速独占设备(如打印机)的技术。
工作原理:
- 预输入: 从低速设备(如读卡机)上输入的数据,首先存放在磁盘上的一个特定区域(称为“输入井”)。
- 缓输出: 用户进程需要输出数据时,不是直接输出到低速打印机,而是先将数据快速写入磁盘上的另一个特定区域(称为“输出井”)。
- 实际输出: 一个专门的“守护进程”(或称SPOOLing进程)在后台按顺序从输出井中读取数据,并真正地输出到低速打印机上。
作用:
- 提高I/O速度: 将低速I/O操作转换为快速的磁盘读写,极大地提高了系统的吞吐量。
- 将独占设备变为共享设备: 多个进程的输出请求可以写入同一个输出井,由SPOOLing进程统一管理,实现了对独占设备的共享。
- 实现设备脱机操作: 用户进程感觉像在直接使用设备,但实际上设备是由系统统一管理的,实现了输入/输出的并行操作。
第六章:文件系统
核心习题解析
文件系统的基本功能是什么?
参考答案: 文件系统是操作系统中负责管理文件和数据的软件机构,其基本功能包括:
- 文件存储空间的管理: 负责为文件分配存储空间,并回收不再使用的空间,常用的管理方法有空闲表法、空闲链表法、位示图法等。
- 文件的目录管理: 建立和维护文件的目录结构,实现“按名存取”,目录项通常包含文件名、文件在外存的物理地址、文件属性等信息。
- 文件的读/写管理和保护: 提供文件的读写操作接口,并设置存取控制机制(如读、写、执行权限),防止未经授权的访问或破坏。
- 提供用户接口: 为用户提供统一的、方便的文件操作接口,如
open(),read(),write(),close()等系统调用。
什么是索引节点?它有什么优点?
参考答案:
索引节点: 也称i节点,是UNIX/Linux等系统中用于存储文件元数据的数据结构,它包含了文件的详细信息,如文件类型、大小、时间戳、权限、所有者以及指向文件数据块的指针列表,但不包含文件名。
优点:
- 加快目录检索速度: 在文件系统中,目录项通常只包含文件名和对应的索引节点号,查找文件时,只需通过文件名找到其索引节点号,然后根据索引节点号快速定位到索引节点,获取文件信息,而无需读取整个目录内容。
- 支持大文件: 索引节点中包含一个指针数组,可以指向多个数据块,对于更大的文件,还可以使用间接索引(一次间接、二次间接等)来管理,突破了直接寻址数量的限制,使得文件系统可以支持非常大的文件。
- 实现文件共享: 多个目录项可以指向同一个索引节点号,从而实现不同路径下的文件共享(硬链接)。
第七章:操作系统接口
核心习题解析
系统调用与库函数有什么区别和联系?
参考答案:
联系:
- 目的相同: 都是为了方便用户使用操作系统功能,提供编程接口。
- 实现相关: 很多库函数(如C标准库中的
printf)的底层实现,就是通过封装一个或多个系统调用来完成的。区别: | 特征 | 系统调用 | 库函数 | | :----------- | :------------------------------------------- | :--------------------------------------------- | | 本质 | 操作系统内核提供给用户程序的接口。 | 函数库(如C库)提供的一组函数集合。 | | 运行空间 | 从用户态切换到内核态执行,开销大。 | 在用户态执行,开销小。 | | 功能 | 提供最核心、最底层的功能(进程控制、文件操作等)。 | 在系统调用基础上提供更复杂、更友好的功能封装。 | | 可移植性 | 与操作系统内核相关,不同OS的系统调用不同。 | 通常遵循标准(如POSIX),可移植性好。 | | 关系 | 是库函数的底层实现基础之一。 | 是系统调用的上层封装,方便用户使用。 |
各章习题答案索引
由于篇幅所限,无法在此一一列出所有习题的答案,以下是一些常见的习题资源获取途径,希望能帮助你更好地学习:
-
官方与配套资源:
- 查看书籍前言或出版社网站,有时会提供部分答案或勘误表。
- 一些高校的任课教师可能会在自己的课程网站上发布部分习题答案。
-
网络资源(请自行甄别质量):
- CSDN/博客园/知乎: 搜索“计算机操作系统 汤小丹 第五版 课后答案”,可以找到大量由网友整理的博客文章和笔记。
- 豆丁网/道客巴巴: 这类文档分享网站有用户上传的完整或部分课后答案扫描件或电子版。
- GitHub: 搜索相关关键词,可能会有一些学习者开源的笔记和答案项目。
- 高校课程网站: 搜索“操作系统 课件”或“操作系统 习题”,可以找到国内许多知名高校(如清华、北大、哈工大等)的公开课程资料,其中往往包含习题讲解。
学习建议:
- 重在理解: 操作系统的概念环环相扣,死记硬背效果不佳,务必理解每个机制的设计思想、解决的问题和优缺点。
- 动手实践: 如果条件允许,尝试自己用C语言模拟实现一些简单的算法,如银行家算法、页面置换算法(FIFO, LRU, OPT)、生产者-消费者问题等,这会极大地加深你的理解。
- 多思多问: 遇到不懂的问题,多思考“为什么这么设计?”,可以和同学讨论,或者在相关技术社区(如Stack Overflow、V2EX)提问。
希望这份详细的解析和资源索引能对你的学习有所帮助!祝你学习顺利!

