![]()
内容推荐 本书全面系统地介绍了现代操作系统的基本理论和最新技术,并具体分析了Windows 和Linux中的实现技术和方法。 全书分为12章,为了便于没有先修“计算机原理”“计算机组织结构”课程的读者阅读,本书增设了第0章,简单介绍了计算机系统,尤其是计算机硬件组成。第1章概述了操作系统的定义、发展、功能、特征和类型; 第2~8章分别介绍进程与线程、进程同步与通信、调度与死锁、存储管理、虚拟存储管理、设备管理和文件管理; 第9章和第10章分别讲述Windows和Linux两个常用操作系统的实现技术; 第11章介绍操作系统安全。每章后附有思考与练习题,与本书配套的《计算机操作系统实验指导》(清华大学出版社)中有对应思考与练习题的详细解答。 本书可作为普通高等院校“操作系统”课程的教材,也可作为相关专业技术人员学习计算机操作系统的参考书。 目录 配套资源下载 第0章 计算机系统概述 0.1 计算机系统及其结构 0.2 计算机硬件 0.2.1 中央处理器 0.2.2 存储器 0.2.3 I/O系统 0.2.4 总线 0.2.5 启动计算机 0.3 指令的执行 0.3.1 取指令与执行指令 0.3.2 I/O函数 0.4 中断 0.4.1 中断与指令周期 0.4.2 中断处理 0.4.3 多个中断 思考与练习题 第1章 操作系统引论 1.1 操作系统的定义 1.1.1 资源管理的观点 1.1.2 用户的观点(扩展机器的观点) 1.2 操作系统的产生和发展 1.2.1 第一代计算机没有操作系统 1.2.2 第二代计算机有了监控系统 1.2.3 第三代计算机操作系统得到极大的发展 1.2.4 第四代计算机操作系统向多元化方向发展 1.3 操作系统的特征 1.4 操作系统的功能 1.4.1 进程管理 1.4.2 存储管理 1.4.3 设备管理 1.4.4 文件管理 1.4.5 操作系统接口 1.5 操作系统的类型 1.5.1 批处理操作系统 1.5.2 分时操作系统 1.5.3 实时操作系统 1.5.4 微机操作系统 1.5.5 多处理机操作系统 1.5.6 网络操作系统 1.5.7 分布式操作系统 1.5.8 嵌入式操作系统 1.6 操作系统的体系结构 1.6.1 单核系统 1.6.2 多核系统 1.6.3 集群系统 思考与练习题 第2章 进程与线程 2.1 进程的引入 2.1.1 单道程序的顺序执行 2.1.2 多道程序的并发执行 2.1.3 程序并发执行的条件 2.1.4 进程的概念 2.2 进程的状态及组成 2.2.1 进程的基本状态 2.2.2 进程的挂起状态 2.2.3 进程控制块 2.3 进程控制 2.3.1 操作系统内核 2.3.2 进程的创建与撤销 2.3.3 进程的阻塞与唤醒 2.3.4 进程的挂起与激活 2.4 线程 2.4.1 线程的概念 2.4.2 线程与进程的比较 2.4.3 线程的实现 2.4.4 多线程问题 思考与练习题 第3章 进程同步与通信 3.1 进程同步与互斥 3.1.1 并发原理 3.1.2 临界资源与临界区 3.1.3 互斥实现的硬件方法 3.1.4 互斥实现的软件方法 3.1.5 信号量和P、V操作 3.2 经典进程同步与互斥问题 3.2.1 生产者—消费者问题 3.2.2 读者—写者问题 3.2.3 哲学家进餐问题 3.2.4 打瞌睡的理发师问题 3.3 AND信号量 3.3.1 AND信号量的引入 3.3.2 用AND信号量解决实际应用 3.4 管程 3.4.1 管程的思想 3.4.2 管程的结构 3.4.3 用管程解决实际应用 3.5 同步与互斥实例 3.5.1 Solaris的同步与互斥 3.5.2 Windows的同步与互斥 3.5.3 Linux的同步与互斥 3.6 进程通信 3.6.1 进程通信的类型 3.6.2 进程通信中的问题 3.6.3 消息传递系统的实现 3.6.4 客户端—服务器系统通信 思考与练习题 第4章 调度与死锁 4.1 调度类型与准则 4.1.1 调度类型 4.1.2 进程调度方式 4.1.3 进程调度时机 4.1.4 调度的性能准则 4.2 调度算法 4.2.1 先来先服务调度算法 4.2.2 短作业(进程)优先调度算法 4.2.3 时间片轮转调度算法 4.2.4 优先权调度算法 4.2.5 多级反馈队列调度算法 4.2.6 多种调度算法的比较 4.3 死锁的基本概念 4.3.1 死锁的定义 4.3.2 死锁产生的原因 4.3.3 可重复使用资源和可消耗资源 4.3.4 死锁产生的必要条件 4.4 死锁的预防与避免 4.4.1 死锁的预防 4.4.2 死锁的避免 4.4.3 银行家算法 4.5 死锁的检测与解除 4.5.1 资源分配图 4.5.2 死锁的解除 4.5.3 鸵鸟算法 思考与练习题 第5章 存储管理 5.1 程序的装入和链接 5.1.1 重定位 5.1.2 链接 5.2 连续分配存储管理方式 5.2.1 单一连续分区 5.2.2 固定分区 5.2.3 可变分区 5.2.4 动态重定位分区 5.3 页式存储管理 5.3.1 页式存储管理的基本原理 5.3.2 页式存储管理的地址变换 5.3.3 页表的硬件实现 5.3.4 页表的组织 5.4 段式存储管理 5.4.1 段式存储管理的基本原理 5.4.2 段式存储管理系统的地址变换 5.4.3 分段和分页的区别 5.4.4 段的共享与保护 5.5 段页式存储管理 5.5.1 段页式存储管理的基本原理 5.5.2 段页式存储管理的地址变换 5.5.3 段页式存储管理系统举例 思考与练习题 第6章 虚拟存储管理 6.1 虚拟存储器的引入 6.1.1 局部性原理 6.1.2 虚拟存储器 6.1.3 虚拟存储器的特征 6.2 请求页式存储管理 6.2.1 请求页式存储管理系统的实现 6.2.2 请求页式存储管理驻留集 序言 “操作系统”是一门技术性很强的课程,是计算机 及其相关专业本科生的必修课。它强调理论与实践的结 合,注重实践训练。由于操作系统涉及的原理和算法比 较抽象,使很多学生难以理解和掌握。作者根据多年的 教学经验与体会,同时汲取国内外操作系统优秀教材的 精华,本着提高学生素质、培养创新意识的理念编写了 本书。本书将理论与实践相结合,全面系统地介绍了现 代操作系统的基本理论和最新技术,并具体分析了 Windows和Linux中的实现技术和方法。本书有以下几个 特点: (1) 内容全面,讲解系统。在内容讲解上注 意由浅入深,由表及里。先引出问题,再给出概念、实 现技术和相关算法。全书分为12章,第1章简单介绍操 作系统的定义、发展历程、功能、特征和类型,对于操 作系统新技术,如单核系统、多核系统、集群系统也进 行了介绍; 由于进程管理的内容较多,本书分三章加 以介绍,分别是第2章进程与线程、第3章进程同步与通 信和第4章调度与死锁; 存储管理则分为第5章存储管 理和第6章虚拟存储管理两章进行介绍,其中,第5章存 储管理介绍一般存储管理的技术和方案,有关虚拟存储 的相关技术和问题在第6章虚拟存储管理进行讨论; 第 7章讨论设备管理,在介绍一般设备管理相关技术和传 统外部存储介质的基础上增加非易失性存储介质的内容 及非易失性存储设备应用场景; 第8章讨论文件管理; 第9章和第10章分别介绍Windows和Linux两个主流操作 系统的实现原理和技术,读者在学习完第1~8章对操作 系统基本原理和技术有所了解之后可以看看这些技术在 Windows和Linux操作系统中是如何实现的,也可以比较 一下两个操作系统各自的特点和不足; 第11章操作系 统安全介绍安全操作系统的相关概念及其重要组成部分 ,介绍一些主流操作系统安全机制及对云计算操作系统 中两款典型的云平台综合管理系统——Windows Azure 及Chrome OS,旨在将信息技术前沿与操作系统安全基 本理论相结合,使读者进一步了解并掌握操作系统安全 的发展现状与未来趋势; 开设操作系统的高校,有些 没有开设先修课“计算原理”或“计算机组织结构”, 这使得学生在学习操作系统时有些困难,为此增加了第 0章计算机系统概述。(2) 理论配有实例。本书以 Windows和Linux为实例,分别介绍操作系统理论在这个 实际操作系统中的具体应用,以充实的内容在抽象概念 与实际实现之间架设了桥梁。(3) 理论与实践相结合 。“操作系统”课程的特点之一是实验的难度大。本书 配套有《计算机操作系统实验指导》(清华大学出版社 ),其中设计了不同类型的实习题,对每个实习题都进 行了较为详细的实验指导,并配有经过测试的源程序代 码供学生参考。(4) 为便于教学,本书提供丰富的配 套资源,包括教学大纲、教学课件、电子教案、试卷及 答案示例、实验报告模版、在线作业和900分钟的微课 视频。 资源下载提示课件等资源: 扫描目录上方的二维 码下载。在线作业: 扫描封底作业系统二维码,登录 网站在线做题及查看答案。视频等资源: 扫描封底刮 刮卡中的二维码,再扫描书中相应章节中的二维码,可 以在线学习。 本书可作为普通高等院校“操作系统”课程的教材 ,也可作为相关专业技术人员学习计算机操作系统的参 考书。本书由郁红英、王磊、王宁宁、武磊、李春强编 著。其中,第2~6章、第8章由郁红英编写,第0章、第 11章由王磊、 郁红英编写,第1章、第7章由郁红英、 王宁宁编写,第9章由郁红英、武磊编写,第10章由郁 红英、李春强编写。在本书的修订过程中,作者听取了 许多高校授课教师与广大读者的大量意见和建议,在此 谨致谢意!作者深知水平有限,书中难免有错误和不足 之处,恳请同行和广大读者,特别是使用本书的教师和 学生多提宝贵意见。 作者2021年8月 导语 本书将理论与实践相结合,全面而又系统地介绍了现代操作系统的基本理论和最新技术,并具体分析了Windows和Linux中的实现技术和方法。本教材有以下几个特点。 (1)内容全面,讲解系统。在内容讲解上注意由浅入深、由表及里,先引出问题,再给出概念、实现技术和相关算法。 (2)理论配有实例。本书以Windows和Linux为实例,分别介绍了操作系统理论在这两个实际操作系统中的具体应用,以充实的内容在抽象概念与实际应用之间架设起桥梁,便于读者理解。 (3)理论与实践相结合。操作系统课程的特点之一是实验的难度大。本书配套有《计算机操作系统实验指导》,实验指导中设计了不同类型的实验题,对每个实验题都进行了较为详细的实验指导,并配有经过测试的源程序代码供学生参考。 精彩页 第3章进程同步与通信 操作系统中的并发进程有些是独立的,有些需要相互协作。独立的进程在系统中执行时不影响其他进程,也不被其他进程影响; 而另一些进程需要与其他进程共享数据,以完成一项共同的任务,这些进程之间具有协作关系。如果对协作进程的活动不加约束,就会使系统混乱。如,当多个进程争用一台打印机时,有可能多个进程的输出结果交织在一起,难以区分。所以,为了保证系统的正常活动,使程序的执行具有可再现性,操作系统必须提供某种机制。 进程之间的协作关系包括互斥、同步和通信。 互斥是指多个进程不能同时使用同一个资源,当某个进程使用某种资源时,其他进程必须等待。 同步是指多个进程中发生的事件存在着某种时序关系,某些进程的执行必须先于另一些进程。 进程通信是指多个进程之间要传递一定量的信息。 视频讲解 视频讲解 3.1进程同步与互斥 3.1.1并发原理 1. 并发带来的问题 在单处理机多道程序环境系统中,进程被交替执行,表现出一种并发执行的特征,即使不能实现真正的并行处理,而且进程间来回切换需要一定的开销,但这种交替执行在处理效率上还是带来了很大的好处。但是,由于并发执行的进程之间相对执行速度是不可预测的,它取决于其他进程的活动、操作系统的调度策略等。这就带来了以下困难。 (1) 全局变量的共享充满了危险。如果两个进程都使用同一个全局变量,并且都对该变量进行读写操作,那么不同的读写执行顺序是非常关键的。 (2) 操作系统很难最佳地管理资源的分配。如果某个进程请求使用某个特定的I/O设备,并得到了这个设备,但该进程在使用该设备前被挂起了,操作系统仍然把这个设备锁定给该进程,而不能分配给其他进程,因为操作系统不知道被挂起的进程何时又将执行。此外,资源分配还会导致死锁的危险。 (3) 定位程序的错误是很困难的。这是因为并发程序存在不确定性和不可再现性。 因此并发给操作系统的设计和管理带来了很多问题,操作系统为此要关注的事情有以下几方面。 (1) 操作系统必须记录每个进程的情况,并通过进程控制块实现。 (2) 操作系统必须为每个进程分配和释放各种资源,这些资源包括处理机、存储器、文件和I/O设备。 (3) 操作系统必须保护每个进程的数据和资源,避免遭到其他进程的干涉和破坏。 (4) 保证进程执行结果的正确性,进程的执行结果与速度无关。 以上四个问题中,问题(1)已经在第2章中解决,问题(2)、(3)涉及存储管理、文件管理和设备管理相关的技术,本节要重点解决的是问题(4)。 2. 进程的交互 按进程之间是否知道对方的存在以及进程的交互方式划分,进程的交互可以分为以下三种情况。 (1) 进程间不知道对方。这是一些独立的进程,它们不会一起工作,只是无意地同时存在着。尽管这些进程不一起工作,但是操作系统需要知道它们对资源的竞争情况。例如,两个无关的进程都要使用同一磁盘文件或打印机,操作系统必须控制和管理对它们的访问。 (2) 进程间接知道对方。进程并不需要知道对方的进程标识符,但它们共享某些数据,它们在共享数据时要进行合作。 (3) 进程直接得知对方。进程通过进程标识符互相通信,用于合作完成某些任务。 表31列出了三种可能的认知程度和结果,但实际情况有时并不像表中给出的那么清晰,几个进程可能既要竞争,又要合作,操作系统需要检查进程之间的确切关系,并为它们服务。 表31进程的交互 知 道 程 度关系对其他进程的影响潜在的控制问题 进程间不知道对方竞争进程的执行结果与其他进程无关互斥 死锁 饿死 进程间接知道对方共享合作进程的执行结果可能依赖于从其他进程中得到的消息互斥 死锁 饿死 数据一致性 进程直接得知对方通信合作进程的执行结果可能依赖于从其他进程中得到的消息死锁 饿死 进程的并发执行使进程之间存在着交互,进程间的交互关系包括互斥、同步和通信。 进程互斥是指由于共享资源所要求的排他性,进程之间要相互竞争,某个进程使用这种资源时,其他进程必须等待。换句话说,互斥是指多个进程不能同时使用同一个资源。这种情况下,进程之间知道对方的程度最低。 进程同步是指多个进程中发生的事件存在着某种时序关系,必须协同动作,相互配合,以共同完成一个任务。进程同步的主要任务是使并发执行的诸进程有效地共享资源和相互合作,从而使程序的执行具有可再现性。这种情况比进程之间的互斥知道对方的程度要高,因为进程之间要合作。 进程通信是指多进程之间要传递一定的信息。这种情况下,进程之间知道对方的程度最高,需要传递的信息量也最大。 COUNT=R1; V(mutex); } P2: { P(mutex); R2=COUNT; R2=R2+1; COUNT |