内容简介
本书是操作系统领域的经典教材,涵盖操作系统设计师需要掌握的所有核心概念,并深入探讨了进程与线程、内存管理、文件系统、输入/输出、死锁、虚拟化和云、多处理机系统、操作系统设计等主题。案例研究部分详细分析了Windows、Android和Linux等流行的操作系统。第5版对知识点做了与时俱进的更新,更加关注现代存储方案、新的安全防御方法等,同时优化篇章结构,全面反映了当代操作系统的技术动向与发展趋势。本书适合作为高等院校计算机专业的操作系统课程教材,也适合相关技术人员参考。
目录
目 录
译者序
前言
作者简介
第1章 引论1
1.1 什么是操作系统2
1.1.1 作为扩展机器的操作系统3
1.1.2 作为资源管理器的操作系统4
1.2 操作系统的历史5
1.2.1 第一代计算机(1945~
1955年):真空管和穿
孔卡片5
1.2.2 第二代计算机(1955~
1965年):晶体管和批
处理系统5
1.2.3 第三代计算机(1965~
1980年):集成电路芯
片和多道程序设计7
1.2.4 第四代计算机(1980年
至今):个人计算机11
1.2.5 第五代计算机(1990年
至今):移动计算机13
1.3 计算机硬件简介14
1.3.1 处理器15
1.3.2 存储器17
1.3.3 非易失性存储器20
1.3.4 I/O设备21
1.3.5 总线23
1.3.6 启动计算机 24
1.4 操作系统大观园25
1.4.1 大型机操作系统25
1.4.2 服务器操作系统26
1.4.3 个人计算机操作系统26
1.4.4 智能手机和掌上计算机操作
系统26
1.4.5 物联网和嵌入式操作系统26
1.4.6 实时操作系统27
1.4.7 智能卡操作系统27
1.5 操作系统概念28
1.5.1 进程28
1.5.2 地址空间29
1.5.3 文件30
1.5.4 输入/输出32
1.5.5 保护32
1.5.6 shell32
1.5.7 个体重复系统发育33
1.6 系统调用35
1.6.1 用于进程管理的系统调用38
1.6.2 用于文件管理的系统调用40
1.6.3 用于目录管理的系统调用41
1.6.4 各种系统调用42
1.6.5 Windows API43
1.7 操作系统结构45
1.7.1 单体系统45
1.7.2 层次式系统46
1.7.3 微内核46
1.7.4 客户端-服务器模式48
1.7.5 虚拟机49
1.7.6 外核和unikernel52
1.8 依靠C的世界52
1.8.1 C语言53
1.8.2 头文件53
1.8.3 大型编程项目54
1.8.4 运行模型55
1.9 有关操作系统的研究55
1.10 本书其他部分概要56
1.11 公制单位56
1.12 小结57
习题57
第2章 进程与线程60
2.1 进程60
2.1.1 进程模型60
2.1.2 进程的创建62
2.1.3 进程的终止63
2.1.4 进程的层次结构64
2.1.5 进程的状态65
2.1.6 进程的实现66
2.1.7 多道程序设计模型67
2.2 线程68
2.2.1 线程的使用68
2.2.2 经典的线程模型71
2.2.3 POSIX线程74
2.2.4 在用户空间中实现线程75
2.2.5 在内核中实现线程78
2.2.6 混合实现79
2.2.7 使单线程代码多线程化79
2.3 事件驱动服务器82
2.4 同步和进程间通信84
2.4.1 竞争条件84
2.4.2 临界区85
2.4.3 忙等待的互斥86
2.4.4 睡眠与唤醒90
2.4.5 信号量92
2.4.6 互斥量95
2.4.7 管程98
2.4.8 消息传递103
2.4.9 屏障105
2.4.10 优先级反转106
2.4.11 避免锁:读-复制-更新107
2.5 调度108
2.5.1 调度简介108
2.5.2 批处理系统中的调度113
2.5.3 交互式系统中的调度114
2.5.4 实时系统中的调度118
2.5.5 策略和机制119
2.5.6 线程调度119
2.6 有关进程与线程的研究121
2.7 小结121
习题122
第3章 内存管理127
3.1 无内存抽象127
3.2 一种内存抽象:地址空间130
3.2.1 地址空间的概念130
3.2.2 交换技术132
3.2.3 空闲内存管理134
3.3 虚拟内存136
3.3.1 分页137
3.3.2 页表139
3.3.3 加速分页过程142
3.3.4 针对大内存的页表144
3.4 页面置换算法147
3.4.1 最优页面置换算法148
3.4.2 最近未使用页面置换算法148
3.4.3 先进先出页面置换算法149
3.4.4 第二次机会页面置换算法149
3.4.5 时钟页面置换算法150
3.4.6 最近最少使用页面置换算法151
3.4.7 用软件模拟LRU151
3.4.8 工作集页面置换算法 152
3.4.9 工作集时钟页面置换算法155
3.4.10 页面置换算法小结157
3.5 分页系统中的设计问题157
3.5.1 局部分配策略与全局分配
策略158
3
前言/序言
前 言
这一版与第4版有很大的不同。由于操作系统并非一成不变,所以书中随处可见许多为介绍新内容而做的细小改动。例如,第4版几乎只关注用于存储的磁盘,而第5版则对基于闪存的固态硬盘(SSD)给予了与其受欢迎程度相匹配的关注。关于Windows 8.1的章节已被新的关于Windows 11的章节完全取代。我们重写了安全相关章节的大部分内容,更多地关注与操作系统直接相关的主题(以及新的攻击和防御方法),同时减少了对密码学和隐写术的讨论。以下是有关各章节更改的概要。
第1章在许多地方进行了大量修改和更新,但除了删去对CD-ROM和DVD的描述,引入使用SSD和持久性存储器等现代存储解决方案外,没有增加或删除任何主要部分。
第2章增加了对事件驱动服务器的讨论,并提供了一个包含伪代码的详尽示例。我们将优先级反转作为独立的一小节,并在其中讨论了处理该问题的方法。本书重新排列了一些章节,以使讨论更加清晰。例如,在介绍生产者-消费者后立即讨论了读者-写者问题,并将哲学家进餐问题完全转移到第6章。除了许多细节更新外,还删除了一些较为陈旧的内容,如调度程序激活和弹出线程。
第3章现在关注的是现代64位体系结构,包含了对分页和TLB的更为精确的解释。例如,描述了操作系统如何使用分页,以及一些操作系统如何将内核映射到用户的进程地址空间。
第4章的内容有很大变化,删除了对CD-ROM和磁带的冗长描述,增加了有关基于SSD的文件系统、在现代基于UEFI的计算机系统中引导以及安全文件删除和磁盘加密的内容。
第5章介绍了更多关于固态硬盘和NVMe的内容,并使用现代USB键盘而不是第4版中旧的PS/2键盘来解释输入设备。此外,还阐明了中断、陷阱、异常和故障之间的关系。
如前所述,本书在第6章中增加了哲学家进餐的例子。除此之外,这一章几乎没有变化。死锁这一主题相当稳定,基本没有新的研究成果。
第7章中,在现有的(和更新的)基于虚拟化管理程序的介绍中增加了关于容器的内容。有关VMware的资料也已更新。
第8章是关于多处理机系统的更新版本,增加了关于同时多线程的小节,并讨论了新型的协处理器。同时删除了一些小节,如过时的关于IXP网络处理器的内容和(现在已经失效的)关于CORBA中间件的内容。新增的一小节讨论了安全性调度。
第9章经过了大量修订并重新组织了内容,增加了对与操作系统相关的内容的关注,减少了对加密货币的关注。现在,我们从讨论安全设计的原则以及与操作系统结构的关联性开始本章。我们讨论了令人兴奋的新硬件开发,如Meltdown和Spectre瞬态执行漏洞,这些漏洞自第4版以来就已曝光。此外,我们还描述了对操作系统很重要的新的软件漏洞。最后,大幅扩展了对操作系统硬化方式的描述,深入讨论了控制流完整性、细粒度ASLR、代码签名、访问限制和证明。由于这一领域有许多正在进行的研究,因此增加了新的参考文献,并重写了研究部分。
第10章反映了Linux和Android的最新发展。自第4版以来,Android已经有了相当大的进展,因此,本章详细介绍了Android的当前版本,相关小节已基本重写。
第11章变化很大。第4版介绍的是Windows 8.1,而现在介绍的是Windows 11。这基本上是一个全新的章节。
第12章在第4版的基础上略有修订。本章介绍了系统设计的基本原则,这些原则在过去几年中没有太大变化。
第13章是一份更新的建议阅读书目清单。此外,参考文献列表也进行了更新,收录了在本书第4版推出后发表的100多篇新论文。
此外,为了反映最新的操作系统研究成果,本书的研究部分已完全重写。而且,所有章节都增加了新的问题。
教师的补充资料(包括PowerPoint)放在https://www.pearsonhighered.com/cs-resources上。
许多人参与了第5版的修订工作。第7章中有关VMware的内容(见7.11节)是由Edouard Bugnion完成的,他来自洛桑联邦理工学院(EPFL)。Edouard是VMware的创始人之一,他比任何人都更了解VMware,我们非常感谢他的大力支持。
佐治亚理工学院的Ada Gavrilovska是Linux内核专家,她更新了本书的第10章,并且第4版的第10章也是她编写的。第10章中关于Android的内容是由Google的Dianne Hackborn撰写的,她是Android系统的主要开发者之一。Android是智能手机上最流行的操作系统,所以我们非常感谢Dianne的帮助。如今第10章篇幅较长且内容十分详尽,UNIX、Linux和Android的粉丝可以从中学到很多。
然而,我们并没有忽略Windows。微软的Mehmet Iyigun更新了本书的第11章,这一章详细介绍了Windows 11。Mehmet对Windows有着丰富的知识和足够的洞察力,能够判断微软正确和错误的地方。他也得到了Andrea Allievi、Pedro Justo、Chris Kleynhans和Erick Smith的大力协助。Windows的粉丝肯定会喜欢这一章。
由于这些专家的努力,本书变得更好了。在此,再一次感谢他们提供的帮助。