猜你喜欢
现代操作系统:原理与实现

现代操作系统:原理与实现

书籍作者:陈海波 夏虞斌 等著 ISBN:9787111666073
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:2285
创建日期:2021-02-14 发布日期:2021-10-07
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

本书以三个“面向”为导向,即面向经典基础理论与方法,面向国际前沿研究,面向工业界实践,深入浅出地介绍操作系统的理论、架构、设计方法与具体实现。本书是首本以ARM64为主体介绍操作系统的教材,将学术前沿与工业实践充分结合,不仅介绍了现有的Linux宏内核操作系统架构,而且介绍了微内核、外核等操作系统架构。

本书共分为三个部分,其中第一部分(操作系统基础)以纸质版的形式出版,第二部分(操作系统进阶)和第三部分(ChCore课程实验)则以电子版的形式在本书网站发布。第一部分共分为11章,内容包括:操作系统概述、硬件结构、操作系统结构、内存管理、进程与线程、操作系统调度、进程间通信、同步原语、文件系统与存储、设备管理和系统虚拟化。

本书包含大量插图、示例和练习,并融入了典型的操作系统相关的技术问题,既可以作为高等院校计算机专业本科生和研究生的操作系统课程教材...

作者简介

陈海波

上海交通大学特聘教授、博导,并行与分布式系统研究所所长,领域操作系统教育部工程研究中心主任,国家杰出青年基金获得者,ACM杰出科学家,CCF杰出会员与杰出演讲者。主要研究领域为操作系统和系统安全。曾获教育部技术发明一等奖(第一完成人)、全国优秀博士学位论文奖、CCF青年科学家奖。目前担任ACM SIGOPS ChinaSys主席、CCF系统软件专委会副主任、ACM旗舰杂志Communications of the ACM中国首位编委与Special Sections领域共同主席、ACM Transactions on Storage编委。曾任ACM SOSP 2017年大会共同主席、ACM CCS 2018系统安全领域主席、ACM SIGSAC奖励委员会委员。研究工作还获得了华为最*个人贡献奖、金牌团队奖。按照csrankings.org的统...

编辑推荐

以三个“面向”为导向,即面向经典基础理论与方法,面向国际前沿研究,面向工业界实践,深入浅出地介绍操作系统的理论、架构、设计方法与具体实现。本书是首本以ARM64为主体介绍操作系统的教材,将学术前沿与工业实践充分结合,不仅介绍了现有的Linux宏内核操作系统架构,而且介绍了微内核、外核等操作系统架构。

本书作者陈海波现为上海交通大学特聘教授、博导,并行与分布式系统研究所所长,领域操作系统教育部工程研究中心主任,国家杰出青年基金获得者,ACM杰出科学家,CCF杰出会员与杰出演讲者,不但有丰富的教学经验,而且在工业界还有丰富的带领团队研发操作系统的经验。因此本书不但介绍了现代操作系统的经典理论与方法,还结合前沿研究与工业界实践,介绍了真实场景下的应用、问题和解决方案。

为了帮助读者更好地理解操作系统的设计与实现,上海交通大学并行与分布式系统研究所团队还专门实现了一个小巧但具有较完整基础功能的微内核架构教学操作系统ChCore,并基于ChCore设计了一系列的课程实验。

拥有丰富的教辅材料:在“好大学在线”设置了MOOC课程;建设了课程网站,提供了与课程教学配套的讲义PPT与授课视频;搭建了在线社区,供大家讨论与答疑等。

结合作者在工业界长期担任技术和综合面试官的经验,将一些典型的操作系统相关的技术问题融入本书内容以及每章的课后思考题中,既可为工业界从事操作系统相关领域研发工作的专业人员提供参考,又可对希望从事相关领域研发工作的求职者有所帮助。


前言
为什么又要写一本操作系统的书
操作系统是现代计算平台的基础与核心支撑系统,负责管理硬件资源、控制程序运行、改善人机交互以及为应用软件提供运行环境等。长期以来,我国信息产业处于“缺芯少魂”的状态,作为信息产业之“魂”的操作系统是释放硬件能力、构筑应用生态的基础,也是关键的“卡脖子”技术之一。当前,以华为海思麒麟与鲲鹏处理器、银河飞腾处理器等为代表的ARM平台在智能终端和服务器等应用场景的崛起,以及以开源为特色的RISC-V指令集架构的出现与其生态的蓬勃发展,逐步改变了x86处理器在我国一统天下的局面。因此,需要结合ARM等指令集架构与体系结构来构筑新的操作系统或深入优化现有操作系统,从而充分发挥硬件资源的能力并给用户提供更流畅的体验。
操作系统自20世纪50年代诞生以来,经历了从专用操作系统(每个主机与应用场景均需要一个新的操作系统)到通用操作系统(如Windows、UNIX、Linux等,即一个操作系统覆盖很多场景)的转变。在PC时代,由于Windows操作系统的广泛应用与部署,微软于20世纪90年代成为全球市值最高的公司,苹果研制的macOS也支撑苹果一度成为全球最赚钱的科技公司。在数据中心时代,在IBM、Intel等企业的支持下,Linux操作系统又逐步在服务器等场景占据主体地位。在移动互联网时代,苹果在乔布斯回归后基于NeXTSTEP操作系统构筑的iOS、新型macOS、iPadOS、watchOS、tvOS等操作系统支撑苹果又成为当时全球市值最高的科技公司。谷歌于2005年收购了Andrew Rubin于2003年创立的Android公司,并通过持续不断的压强投入逐步将Android操作系统打造成世界上发行量最大的移动智能操作系统。
当前,随着智能终端的多样化,5G带来的大连接、低时延、高吞吐,以及异构硬件设备的繁荣发展,我们正在逐步进入万物互联的智能世界,覆盖所有场景的单一操作系统已经很难发挥出硬件的处理能力并满足应用越来越高的极限需求。当前,华为、阿里、微软、谷歌、Facebook等各大企业纷纷在操作系统领域投入重兵。例如,微软在Windows 10之后开始研制Windows CoreOS,谷歌从2016年开始投入Fuchsia项目,Facebook从2019年开始研制面向AR/VR等的新OS,华为也于2019年发布鸿蒙操作系统并与合作伙伴一起构建openEuler、openHarmony开源社区和华为移动服务(Huawei Mobile Service,HMS)生态。
操作系统的复兴也对教学科研与产业实践提出了新的要求。首先,操作系统教材需要体现操作系统的核心原理与设计,从而帮助读者建立对操作系统的系统性认识;其次,操作系统教材需要反映国际的研究前沿,当前操作系统技术仍在迅猛发展,很多新的问题随着新处理器、新加速器架构、新应用场景的出现而不断涌现,同样,很多经典的问题也会出现新的解决方法,这些都给操作系统的设计与实现提供了新的思路;最后,操作系统教材需要反映工业界实践,操作系统是一门系统性与实践性非常强的学科,脱离实现来谈设计很容易陷入纸上谈兵的陷阱。当前操作系统领域的前沿研究与工业界实践结合得越来越紧密,在工业界新应用场景与需求的推动下,研究人员将前沿研究应用到工业界实践,再由工业界实践反馈进一步推动前沿研究,从而形成了良好的循环,并且循环的速度越来越快。
当前国内外已经出版了一系列优秀的操作系统教材,例如美国威斯康辛大学麦迪逊分校的Remzi H. Arpaci-Dusseau和Andrea C. Arpaci-Dusseau两位教授的Operating Systems: Three Easy Pieces,Abraham Silberschatz、Peter B. Galvin和Greg Gagne的Operating System Concepts。然而,笔者从当前学术研究前沿和工业界实践的角度来看,一些经典的教材缺乏对当前研究前沿的体现,另一些教材仅关注操作系统的概念而缺乏充分的实践环节。此外,大部分教材是以x86体系为主导,缺乏对当前已广泛流行的ARM等体系结构的描述;这些教材也基本以Linux/UNIX等宏内核架构的操作系统为主,缺乏对当前新兴而又经典的微内核架构等系统的深入介绍。
本书将以三个“面向”为导向,即面向经典基础理论与方法,面向国际前沿研究,面向最新工业界实践,深入浅出地介绍操作系统的理论、架构、设计方法与具体实现。对于每项要介绍的内容,本书将从一个具体的操作系统设计问题出发,解释这个问题背后的挑战,给出当前的经典设计,并介绍当前的一些工业界实践与前沿研究。本书不仅介绍典型的Linux操作系统的设计与实现,还将介绍微内核(Microkernel)、外核(Exokernel)等操作系统架构。此外,为了帮助读者更好地理解操作系统的设计与实现,除了本书中介绍的各种操作系统的设计与实现外,上海交通大学并行与分布式系统研究所团队还专门实现了一个小巧但具有较完整基础功能的微内核架构教学操作系统ChCore,并基于ChCore设计了一系列的课程实验。因此,本书期望不仅从理论上具体讲解操作系统的设计与实现,而且能够帮助读者通过动手实践的方式获得操作系统设计与实现的第一手经验。
致使用本书的实践人员
非常感谢您选用本书来了解操作系统的设计与实现!
本书试图通过介绍现代操作系统的设计与实现,为开发、设计、优化与维护操作系统的管理人员、开发人员和维护人员提供基础的概念以及典型的操作系统组件的实现,帮助相关人员快速上手。本书还将结合作者在工业界带领团队研发操作系统的经验,介绍操作系统在典型场景下的实践,并将实践中遇到的一些问题在本书中以多种形式展现。同时,本书还将结合作者做操作系统研究时的一些理解,介绍常见操作系统问题的前沿研究,从而为使用本书的实践人员解决一些真实场景问题提供参考。此外,本书结合作者在工业界长期担任技术和综合面试官的经验,将一些典型的操作系统相关的技术问题融入本书内容以及每章的课后思考题中,以期为在工业界从事操作系统相关领域研发工作的专业人员提供参考。
致使用本书的指导老师
非常感谢您选用本书来讲授操作系统的设计与实现!
由于各学校对操作系统课程的难度要求和教学时长不同,本书将所涉及的内容分为3个等级:基础性内容;较为深入的内容;较为前沿的内容,包含一些工业界的最新实践与国际研究的前沿。各位老师可以根据不同的要求选择各种组合,从而适应各自的教学需要。
本书作者从2009年开始,先后在复旦大学、上海交通大学讲授操作系统课程。本书也融入了作者对教学过程中遇到的一些问题的思考。为了方便各位老师使用本书进行教学,我们还在“好大学在线”设置了MOOC课程,并且建设了课程网站,提供了与课程教学配套的讲义PPT与授课视频,供各位老师参考。本书还搭建了在线社区,供大家讨论与答疑等。
致使用本书的学生
非常感谢您选用本书作为学习操作系统的教材!
我们提供了本书所涉及内容的课程教学PPT、MOOC课程等,希望能供各位预习和复习。此外,思考题不仅有助于进一步巩固所学知识,还综合了作者在工作中以及面试中遇到的常见问题,希望能对各位进一步深入思考操作系统的设计与实现以及后续求职有所帮助。
本书设计的五个课程实验提供了框架代码,由读者去实现其中的关键部分,以加深对操作系统的理解,并且为之后从事计算机系统相关领域的工作和研究打下基础。课程实验采用C语言,并且面向ARM64体系结构(即手机平台最常用的体系结构,也用于华为MateBook的部分型号与苹果后续的MacBook),从而帮助各位了解一个现代操作系统的设计与实现。其中,前四个课程实验实现较为基础的操作系统功能,第五个课程实验实现更具挑战性的功能,读者可以根据自身情况与需要选择不同的课程实验进行实践。
发布方式与版权声明
本书的内容采用电子版和纸质版两种形式。本书的第一部分(操作系统基础)由机械工业出版社以纸质版的形式出版,第二部分(操作系统进阶)以及第三部分(ChCore课程实验)则以电子版的形式在本书网站发布。本书电子版将采用持续发布的模式,根据读者的反馈、作者的持续优化进行定期与不定期更新,购买了本书纸质版的读者可以及时获得本书电子版以及本书的课件、视频与考试资料的更新。本书电子版以及相关课件的版权归上海交通大学并行与分布式系统研究所所有,发布遵守Creative Commons Attribution 4.0 License(完整文本请参阅https://creativecommons.org/licenses/by/4.0/legalcode),读者可以将本书的全部或部分内容免费用于非商业用途,但在使用本书内容时请注明来源,即“内容来自:上海交通大学并行与分布式系统研究所+材料名称”。对于不遵守此声明或者其他违法使用本书内容者,我们将依法保留追究其侵权责任的权利。
致谢
本书的提纲和主要内容基于作者多年来在复旦大学和上海交通大学所讲授的操作系统课程。写作时,首先由陈海波和夏虞斌两位老师确定了本书的整体结构以及各个章节的大纲,然后部分章节由上海交通大学并行与分布式系统研究所及领域操作系统教育部工程研究中心的老师和博士研究生扩展形成初稿,再通过交叉评审、每周迭代的方式逐步完成。具体而言,本书每章的主要贡献者包括:本书的前言、第1章(操作系统概述)、第3章(操作系统结构)由陈海波等完成;第2章(硬件结构)由沈斯杰等完成;第4章(内存管理)由古金宇等完成;第5章(进程与线程)由吴明瑜等完成;第6章(操作系统调度)由董致远等完成;第7章(进程间通信)由杜东等完成;第8章(同步原语)与第12章(多核与多处理器)由刘年等完成;第9章(文件系统)与第13章(文件系统崩溃一致性)由董明凯等完成;第10章(设备管理)与第14章(网络协议栈与系统)由李明煜等完成;第11章(系统虚拟化)由糜泽羽等完成;第15章(轻量级虚拟化)由易纪非等完成;第16章(操作系统安全)由夏虞斌等完成;第17章(操作系统调测)由李文泰等完成;第18章(形式化证明)由邹沫和丁浩然等完成。ChCore课程实验由本课程的助教完成:第19章(Lab1:机器启动)由沈斯杰完成;第20章(Lab2:内存管理)由冯二虎完成;第21章(Lab3:用户进程与异常处理)由赵子铭完成;第22章(Lab4:多核处理)由董致远完成;第23章(Lab5:文件系统与Shell)由沈斯杰完成。陈榕负责全书图片的美化,陈海波与夏虞斌负责整体内容的审核。
本书的完成离不开很多人的支持!很多学术界与工业界的专家通过各种形式提供了很多反馈意见。我们要感谢上海交通大学并行与分布式系统研究所的各位老师和同学;感谢上海交通大学操作系统课程的助教和同学们提供的各种资料与反馈,包括董本超、路旭、江学强、李新锐、胡雨奇、唐楚哲、彭许红、袁楚宏、钱宇超、同睿哲、袁澍民、蔡忠玮、杨帆、杨雁飞、华志超、徐天强、庄浩麒、卢军、黄逸博、王帅惟、林亦辰、吴新月、谢夏婷、王子轩、熊济凡、杨璧丞、余天依、朱伯君、张云昊等;感谢华为操作系统内核实验室各位技术专家提供的意见与支持,包括王楠、李雨、李海程、缪勰、张殿芳、贾宁、钱梽杨、郭寒军、魏勇军、王飞、李坤、马久跃、洪扬、王强、高欣等,以及华为庞加莱实验室的胡欣蔚等。(排名不分先后。)
本书还在不断演进和完善中。每一章的最后都附了反馈二维码,若有任何建议与意见,欢迎扫描二维码进行反馈,我们会在后续的版本中感谢提出宝贵意见的读者。


目录

序言一

序言二

前言

第一部分 操作系统基础

第1章 操作系统概述............................................................... 2

1.1 简约但不简单:从Hello World说起.............................................. 2

1.2 什么是操作系统................................................................ 3

1.3 操作系统简史.................................................................. 6

1.4 操作系统接口.................................................................. 9

1.5 ChCore:一个简单的实验操作系统............................................... 11

参考文献.......................................................................... 12

第2章 硬件结构.................................................................. 13

2.1 CPU与指令集架构.............................................................. 14

2.2 物理内存与CPU缓存........................................................... 17

2.3 设备与中断................................................................... 20

2.4 思考题....................................................................... 22

参考文献.......................................................................... 22

第3章 操作系统结构.............................................................. 23

3.1 操作系统的机制与策略......................................................... 24

3.2 操作系统复杂度管理方法....................................................... 25

3.3 操作系统内核架构............................................................. 274

3.4 操作系统框架结构............................................................. 35

3.5 思考题....................................................................... 39

参考文献.......................................................................... 40

第4章 内存管理.................................................................. 42

4.1 虚拟地址与物理地址........................................................... 43

4.2 基于分页的虚拟内存........................................................... 46

4.3 虚拟内存功能................................................................. 58

4.4 物理内存分配与管理........................................................... 62

4.5 案例分析:ChCore内存管理机制................................................ 70

4.6 思考题....................................................................... 73

参考文献.......................................................................... 74

第5章 进程与线程................................................................ 76

5.1 进程......................................................................... 76

5.2 案例分析:Linux的进程操作.................................................... 80

5.3 线程.......................................................................... 92

5.4 案例分析:ChCore的线程上下文................................................. 99

5.5 纤程......................................................................... 102

5.6 思考题....................................................................... 106

参考文献.......................................................................... 107

第6章 操作系统调度.............................................................. 108

6.1 计算机调度简介............................................................... 108

6.2 调度机制..................................................................... 113

6.3 单核调度策略................................................................. 117

6.4 多核调度策略................................................................. 141

6.5 调度进阶机制................................................................. 151

6.6 案例分析:现代调度器......................................................... 155

6.7 思考题...................................................................... 162

参考文献......................................................................... 163

第7章 进程间通信............................................................... 165

7.1 进程间通信基础.............................................................. 165

7.2 宏内核进程间通信............................................................ 175

7.3 微内核进程间通信............................................................ 186

7.4 案例分析:Android Binder.................................................... 195

7.5 案例分析:ChCore 进程间通信机制............................................. 201

7.6 思考题...................................................................... 203

参考文献......................................................................... 203

第8章 同步原语................................................................. 206

8.1 互斥锁...................................................................... 209

8.2 条件变量.................................................................... 219

8.3 信号量...................................................................... 223

8.4 读写锁...................................................................... 229

8.5 RCU......................................................................... 233

8.6 管程........................................................................ 237

8.7 同步带来的问题.............................................................. 239

8.8 案例分析:Linux中的futex................................................... 249

8.9 案例分析:ChCore中的同步原语................................................ 251

8.10 思考题..................................................................... 252

参考文献......................................................................... 254

第9章 文件系统................................................................. 256

9.1 基于inode的文件系统........................................................ 257

9.2 虚拟文件系统................................................................ 266

9.3 其他文件系统................................................................ 284

9.4 案例分析:ChCore文件系统.................................................... 294

9.5 思考题....................................................................... 296

参考文献.......................................................................... 297

第10章 设备管理................................................................. 299

10.1 计算机设备的连接和通信...................................................... 300

10.2 设备的识别.................................................................. 303

10.3 设备的中断处理.............................................................. 306

10.4 设备驱动与驱动模型.......................................................... 314

10.5 案例分析:Linux设备驱动模型................................................. 316

10.6 案例分析:Zircon的设备驱动模型.............................................. 323

10.7 案例分析:L4设备驱动模型.................................................... 327

10.8 案例分析:Linux的用户态驱动模型............................................. 329

10.9 思考题....................................................................... 332

参考文献........................................................................... 333

第11章 系统虚拟化................................................................ 335

11.1 系统虚拟化技术概述........................................................... 336

11.2 CPU虚拟化................................................................... 338

11.3 内存虚拟化................................................................... 347

11.4 I/O虚拟化................................................................... 357

11.5 中断虚拟化................................................................... 366

11.6 案例分析:QEMU/KVM........................................................... 367

11.7 思考题....................................................................... 372

参考文献........................................................................... 373

缩略语............................................................................. 375

在线章节

第二部分 操作系统进阶

第12章 多核与多处理器

第13章 文件系统崩溃一致性

第14章 网络协议栈与系统

第15章 轻量级虚拟化

第16章 操作系统安全

第17章 操作系统调测

第18章 形式化证明

第三部分 ChCore课程实验

第19章 Lab1:机器启动

第20章 Lab2:内存管理

第21章 Lab3:用户进程与异常处理

第22章 Lab4:多核处理

第23章 Lab5:文件系统与Shell


短评

陈海波老师永远滴神,好书,就是level

2020-11-01 02:41:08

很好的一本书,操作系统的内容具有现代的特色。包含了一些比较新的基础知识。在国内操作系统教材中并不多见。

2020-10-31 11:18:52

好书强推

2020-09-28 19:35:34

图书,活动满减价格实惠,包装细致快递给力!

2020-10-31 00:01:25

冲着陈海波老师买的,国内系统领域绝对的大牛,书还没看,简单过了一遍发现有很多以前本科都没讲过的内容,值得一看!

2020-10-28 15:44:26

标签
操作系统,计算机科学,计算机,计算机系统,OS,CS,编程,Programming
产品特色