基本信息

【插图】

编辑推荐
(1)本书以三个“面向”为导向,即面向经典基础理论与方法,面向国际前沿研究,面向工业界实践,深入浅出地介绍操作系统的理论、架构、设计方法与具体实现。本书是首本以ARM64为主体介绍操作系统的教材,将学术前沿与工业实践充分结合,不仅介绍了现有的Linux宏内核操作系统架构,而且介绍了微内核、外核等操作系统架构。
(2)本书作者陈海波现为上海交通大学特聘教授、博导,并行与分布式系统研究所所长,领域操作系统教育部工程研究中心主任,国家杰出青年基金获得者,ACM杰出科学家,CCF杰出会员与杰出演讲者,不但有丰富的教学经验,而且在工业界还有丰富的带领团队研发操作系统的经验。因此本书不但介绍了现代操作系统的经典理论与方法,还结合前沿研究与工业界实践,介绍了真实场景下的应用、问题和解决方案。
(3)为了帮助读者更好地理解操作系统的设计与实现,上海交通大学并行与分布式系统研究所团队还专门实现了一个小巧但具有较完整基础功能的微内核架构教学操作系统ChCore,并基于ChCore设计了一系列的课程实验。
(4)本书拥有丰富的教辅材料:在“好大学在线”设置了MOOC课程;建设了课程网站,提供了与课程教学配套的讲义PPT与授课视频;搭建了在线社区,供大家讨论与答疑等。
(5)本书结合作者在工业界长期担任技术和综合面试官的经验,将一些典型的操作系统相关的技术问题融入本书内容以及每章的课后思考题中,既可为工业界从事操作系统相关领域研发工作的专业人员提供参考,又可对希望从事相关领域研发工作的求职者有所帮助。
内容简介
计算机书籍
本书以三个“面向”为导向,即面向经典基础理论与方法,面向国际前沿研究,面向工业界实践,深入浅出地介绍操作系统的理论、架构、设计方法与具体实现。本书是首本以ARM64为主体介绍操作系统的教材,将学术前沿与工业实践充分结合,不仅介绍了现有的Linux宏内核操作系统架构,而且介绍了微内核、外核等操作系统架构。
本书共分为三个部分,其中基础部分(操作系统基础)以纸质版的形式出版,第二部分(操作系统进阶)和第三部分(ChCore课程实验)则以电子版的形式在本书网站发布。基础部分共分为11章,内容包括:操作系统概述、硬件结构、操作系统结构、内存管理、进程与线程、操作系统调度、进程间通信、同步原语、文件系统与存储、设备管理和系统虚拟化。
本书包含大量插图、示例和练习,并融入了典型的操作系统相关的技术问题,既可以作为高等院校计算机专业本科生和研究生的操作系统课程教材,也可以作为工业界从事操作系统相关领域研发工作的专业人员的参考书。
作译者
夏虞斌 上海交通大学副教授、博导,CCF高级会员。主要研究领域为操作系统、体系结构和系统安全,曾任OSDI、EuroSys等多个国际会议的程序委员会委员。领导团队研发的安全操作系统T6获得2015年“挑战杯”全国大学生课外学术科技作品竞赛和中国大学生创业计划竞赛特等奖、2019年中国“互联网+”大学生创新创业大赛全国银奖,并已实现产业化,实际部署设备数量过亿;基于RISC-V平台研发的可信执行环境软硬件系统“蓬莱”现已开源。
·由浅入深介绍现代操作系统经典理论与方法
·结合前沿研究与工业界实践,面向真实场景与真实问题
·全新打造ChCore实验内核,建立对操作系统的第一手实践经验
目录
序言二
前言
第一部分 操作系统基础
第1章 操作系统概述........................................ 2
1.1 简约但不简单:从Hello World说起........................................ 2
1.2 什么是操作系统........................................ 3
1.3 操作系统简史........................................ 6
1.3.1 GM-NAA I/O:第一个(批处理)操作系统........................................ 6
1.3.2 OS/360:从专用走向通用........................................ 6
1.3.3 Multics/UNIX/Linux:分时与多任务........................................ 7
1.3.4 macOS/Windows:以人为本的人机交互........................................ 8
1.4 操作系统接口........................................ 9
1.5 ChCore:一个简单的实验操作系统........................................ 11
参考文献........................................ 12
第2章 硬件结构........................................ 13
2.1 CPU与指令集架构........................................ 14
2.1.1 指令集........................................ 14
2.1.2 特权级........................................ 15
2.1.3 寄存器........................................ 17
前言
操作系统是现代计算平台的基础与核心支撑系统,负责管理硬件资源、控制程序运行、改善人机交互以及为应用软件提供运行环境等。长期以来,我国信息产业处于“缺芯少魂”的状态,作为信息产业之“魂”的操作系统是释放硬件能力、构筑应用生态的基础,也是关键的“卡脖子”技术之一。当前,以华为海思麒麟与鲲鹏处理器、银河飞腾处理器等为代表的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),读者可以将本书的全部或部分内容免费用于非商业用途,但在使用本书内容时请注明来源,即“内容来自:上海交通大学并行与分布式系统研究所 材料名称”。对于不遵守此声明或者其他违法使用本书内容者,我们将依法保留追究其侵权责任的权利。
序言
序言一
软件是计算系统的“灵魂”,而操作系统则是软件运行和支撑技术的核心,“CPU+操作系统”更是成为信息产业生态的核心、信息时代安全的基石。自1956年第一个实用操作系统诞生以来,操作系统已历经60多年的发展。它一方面是伴随以CPU为代表的硬件及其组成结构的发展,另一方面是为了支持多机、分布和网络环境,以及满足新型计算模式和新型应用的需求。迄今,以20年左右为周期,操作系统已出现从主机计算时代到个人计算时代,再到移动计算时代的两次重大变迁,每次变迁均涉及计算设备及其用户两方面的数量级的跃升,同时诞生了新的“CPU+操作系统”生态。当然,从技术本质看,操作系统“向下管理各种计算资源,向上为应用程序提供运行环境和开发支撑,为用户提供交互界面”的角色定位未变。
当前,万物互联、人机物融合计算的泛在计算时代正在开启。以云计算、大数据、人工智能和物联网等为代表的新型应用场景,多种不同架构的CPU、GPU和加速器与以新型存储、传感设备等为代表的新型硬件,以及嵌入式、移动计算、边缘计算、云计算等不同规模的计算系统,使得操作系统的内涵和外延均发生了重大变化,新一轮的重大变迁正在孕育中。我以为,支撑泛在计算的“泛在操作系统”将成为新的操作系统形态,并催生新的“CPU+操作系统”生态。这一轮变迁将促进新的操作系统研究与实践,在带来新机遇的同时,也会产生新的挑战和更激烈的竞争。
操作系统的发展离不开一代又一代科技工作者的接力付出,因此,操作系统人才培养与操作系统研发处于同样重要的地位!人才培养的根基就在于大学阶段的操作系统教学。考察已有的操作系统教材,面对新的计算时代所带来的新要求和新挑战,它们还存在若干需要改进之处。
首先,在新的泛在计算环境下,主流的计算设备不仅包括x86平台,还包括以ARM为代表的移动计算平台,未来还可能诞生以RISC-V为代表的物联计算平台,计算系统的规模和架构也趋于多样化,因此,需要思考和探索适合新型计算设备和系统的操作系统架构,改变传统操作系统教材以x86指令集为主,面向单机平台,以宏内核架构为实例进行讲解的模式,增加对微内核等新型操作系统架构、分布式和云计算平台、移动计算平台乃至物联计算平台等相关内容的讲解。
其次,随着计算平台与环境的扩展和泛化,在计算机系统上运行的应用形态也趋于多样化,而传统的操作系统教学更多关注底层运行机理,对上层应用的支持关注较少。在拥有众多新的应用场景的新一代计算环境下,操作系统的研究和教学不仅要关注底层设备和资源的管理,以及计算机系统的运行机制,还要关注运行在操作系统之上的新型应用的开发、运行和管理支撑平台与技术。
最后,操作系统教学的特点是层次多、内容杂,拥有很多的理论和技术知识点,为了帮助学生全面掌握这些技术的来龙去脉,就必须在操作系统教学中强调理论与实践相结合。早期的操作系统教材更多强调理论与方法,而不讲解实际系统的设计与实现,导致学生无法将所学的知识映射到真实系统,从而不能很好地去解决实际问题;而过多关注某个实际系统的实现,则可能将大量的时间花费在各种细节上,导致学生缺乏对全局与原理的整体把握,形成思维定式而难以举一反三。
我非常高兴地看到,陈海波教授等人编写的这本教材在上述很多方面进行了新的尝试。其一,本书以ARM64体系结构为主,面向多种体系结构,主要介绍微内核架构,同时也兼顾了宏内核与外核等架构,体现了操作系统的“现代性”。其二,本书采用“问题驱动”的思路,通过实际问题引出设计原理与实现方法;对同一问题,讨论多种设计的优缺点以及不同的适用场景,使读者不但“知其然”,而且“知其所以然”。其三,本书在平衡理论与实践方面做了很有益的尝试,针对教学与科研的需求,专门设计与实现了一个微内核操作系统,将理论内容与代码实现相融合;并在此基础上设计了一套课程实验,读者可以通过动手实践,进一步加深对操作系统的理解。当然,也需指出,本书还只是针对移动计算环境的改进和加强,目前尚未涉及物联计算环境。
本书作者长期从事操作系统领域的研究工作,不仅在操作系统研究领域取得了较为突出的成果,还在工业界开展了深入实践。本书基于作者多年来在复旦大学和上海交通大学讲授“操作系统”课程的经验,经过提炼与整理,结合了操作系统的经典理论、研究前沿和工业界实践,为深入理解操作系统的原理与实现提供了较为翔实的学习资料与实践平台。通过这门课程的学习,学生们可以建立起操作系统的完整知识体系,为后续在计算机系统方向进行更深入的学习和研究奠定基础。已有的教学实践表明,这是一本值得操作系统相关领域的研究人员、学生与工业界实践者保有的学习和参考书籍。
我国正在全面推进经济和社会的数字化转型、网络化重构和智能化提升,加快建设数字中国,发展数字经济。无疑,操作系统等基础软件的自主可控将是这一深度信息化进程的关键。目前,我国操作系统受制于人的问题仍然非常突出。要想改变这一现状,我们不仅需要把握新的泛在计算时代所带来的机遇,应对设计和实现一个完整操作系统所面临的众多技术挑战,更重要的是要构建操作系统开发和运行的生态,让更多的人融入操作系统生态的开发、维护和发展中。要破解这个难题,需要我国学术界和产业界的协同,需要更多从业人员的参与和合作,更需要源源不断的人才供给,特别是年青学生这个源头。衷心希望本书能够为我国操作系统教学和人才培养做出实质性贡献。
是为序。
梅宏
中国科学院院士
中国计算机学会理事长
庚子年仲秋于北京
媒体评论
本书以三个“面向”为导向,即面向经典基础理论与方法,面向国际前沿研究,面向最新工业界实践,深入浅出地介绍操作系统的理论、架构、设计方法与具体实现。本书结合作者在工业界带领团队研发操作系统的经验,介绍了操作系统在典型场景下的实践,试图将实践中遇到的一些问题以多种形式展现给读者。同时,本书还结合作者做操作系统研究时的一些理解,介绍了常见操作系统问题的前沿研究,从而为使用本书的实践人员解决一些真实场景问题提供参考。
本书不仅介绍了典型的Linux 操作系统的设计与实现,还介绍了微内核、外核等操作系统架构。此外,为了帮助读者更好地理解操作系统的设计与实现,上海交通大学并行与分布式系统研究所团队还专门实现了一个小巧但具有较完整基础功能的微内核架构教学操作系统ChCore,并基于ChCore设计了一系列的课程实验。