《操作系统原理与设计实现》是一本深入讲解操作系统基本原理与实现方法的教材,属于《“101计划”核心教材计算机领域》丛书之一。全书以“设计一个可实际运行的小操作系统”为主线,系统地介绍了操作系统的运行机制、核心模块及其相互关系。书中结合Linux和OpenHarmony等实际操作系统案例,详细阐述了操作系统的基本原理、算法与数据结构,并通过代码分析帮助读者理解操作系统的实现细节。
全书内容分为三大部分:首先,基础原理部分(第1~10章)围绕操作系统的基本功能模块,包括系统启动、系统调用、进程管理、内存管理、设备驱动、文件系统等,深入讲解了操作系统的运行机制与核心技术;其次,现代操作系统服务部分(第11~13章)重点探讨了操作系统安全、网络与分布式系统、图形子系统等关键服务的实现原理与实际应用;最后,实践项目部分(第14~19章)通过8个小型项目和6个大型项目,帮助读者将理论应用于实践,提升操作系统设计与实现能力。
《操作系统原理与设计实现》不仅注重理论与实践的结合,还特别关注国产操作系统的发展现状与挑战,通过分析openEuler、OpenHarmony等国产操作系统的案例,引导读者理解操作系统生态建设的重要性。全书内容全面、结构清晰,旨在帮助读者建立系统的“系统观”,为从事计算机系统相关工作奠定坚实基础,并为推动国产操作系统的发展提供理论支持与实践参考。
- 理论实践脱节:以“设计一个可实际运行的小操作系统”为主线,将操作系统原理与实现代码紧密结合,避免空洞理论。
- 启动过程迷茫:通过实例详细讲解系统启动的完整过程,包括镜像生成、各阶段初始化,帮助读者理解计算机开机后的运行机制。
- 系统调用困惑:深入剖析系统调用的实现机理,从用户态到内核态的切换过程,并通过实践项目帮助读者添加自己的系统调用。
- 进程管理理解难:从多进程视图出发,详细讲解进程概念、状态、切换、调度以及线程的实现,构建对操作系统核心机制的深刻理解。
- 国产系统认知不足:结合openEuler、OpenHarmony等国产操作系统案例,帮助读者了解国产OS的发展现状和技术特点。
★★★
Intermediate
BeginnerElementaryIntermediateAdvancedExpert
- 计算机专业学生:作为操作系统课程的深入教材,通过理论与实践结合的方式,扎实掌握操作系统原理。
- 系统软件开发者:从事Linux内核、驱动或系统级软件开发,需要深入理解操作系统内部机制。
- 嵌入式系统工程师:需要了解操作系统的启动、进程、内存管理等核心机制,以优化嵌入式系统设计。
- 国产操作系统研究者:关注openEuler、OpenHarmony等国产OS发展,希望了解其技术实现和生态建设。
- 顺序阅读:建议按章节顺序阅读,第1-10章是基础原理,第11-13章是系统服务,第14-19章是项目实践,由浅入深。
- 动手实践:务必完成各章的实践项目,从控制启动到添加系统调用,通过动手加深对原理的理解。
- 代码研读:结合Linux和OpenHarmony的源码进行对照学习,理解原理在真实系统中的实现。
- 项目驱动:以“设计一个小操作系统”为目标,将各章知识串联起来,形成完整的系统观。
- 系统观建立:构建对操作系统整体架构和运行机制的完整认知,理解各模块间的相互关系。
- 实践能力:通过8个小型项目和6个大型项目,获得设计实现一个可运行操作系统的实战经验。
- 源码阅读力:掌握阅读Linux和OpenHarmony内核源码的方法,提升系统级代码分析能力。
- 国产OS认知:深入了解国产操作系统的发展现状、技术特点与生态建设,为相关开发工作奠定基础。
- 问题解决:具备分析操作系统相关问题的能力,如性能调优、故障排查、驱动开发等。
📖 Book Introduction
内容简介
内页插图



目录
第1章 操作系统概念及其发展概述 1
1.1 什么是操作系统 3
1.2 操作系统历史概述 4
1.2.1 简单的批处理系统 5
1.2.2 OS/360的出现 6
1.2.3 UNIX、Linux的诞生 8
1.2.4 操作系统历史的另一个分支——系统服务的演进 10
1.3 操作系统核心轮廓 14
1.3.1 多进程视图与文件视图 14
1.3.2 系统服务 15
1.4 小结 17
1.5 习题 17
第2章 系统启动——打开电源以后发生的故事 19
2.1 计算机工作机理 21
2.2 操作系统启动过程 23
2.2.1 操作系统启动过程实例——第一阶段 23
2.2.2 操作系统镜像的生成——Makefile 33
2.2.3 操作系统启动过程实例——第二阶段 37
2.2.4 操作系统启动过程实例——第三阶段 41
2.2.5 操作系统启动过程实例——第四阶段 45
2.2.6 操作系统启动过程实例——第五阶段 47
2.3 小结 49
2.4 实践项目1:控制操作系统启动 50
2.5 习题 51
第3章 系统接口——通向操作系统内核的大门 53
3.1 用户使用计算机系统的基本形式 55
3.2 基本系统调用及其应用 56
3.2.1 fork()、exec()、wait()、exit() 56
3.2.2 open()read()、write() 59
3.2.3 printf()scanf() 60
3.3 系统调用的实现机理 60
3.3.1 内核态与用户态 60
3.3.2 系统调用与int Ox80 63
3.3.3 printf()的完整故事 65
3.4 通过系统调用窥见操作系统的基本脉络 68
3.5 小结 69
3.6 实践项目2:添加系统调用 69
3.7 习题 72
第4章 多进程——操作系统运行的核心视图 75
4.1 使用CPU 77
4.1.1 CPU工作机理与使用CPU的直观想法 77
4.1.2 问题的引出与并发 78
4.2 进程概念与多进程视图 80
4.2.1 进程与程序 80
4.2.2 CPU管理与多进程视图 81
4.3 多进程引起的基本问题 83
4.3.1 多个进程的组织与进程状态 83
4.3.2 多个进程的切换和调度 85
4.3.3 进程间的影响分离 86
4.3.4 进程间的通信与合作 88
4.4 小结 90
4.5 实践项目3:打印进程日志 91
4.6 习题 94
第5章 线程切换与调度——操作系统的发动机 97
5.1 线程与进程 99
5.1.1 线程概念的引入 99
5.1.2 一个多线程实例 99
5.1.3 线程与进程 101
5.2 用户级线程的切换与创建 102
5.2.1 用户级线程之间的切换 102
5.2.2 用户级线程的创建 105
5.3 内核级线程的切换与创建 108
5.3.1 内核级线程的引出 108
5.3.2 内核级线程之间的切换 111
5.3.3 内核级线程的创建 115
5.4 创建0号/1号进程一多进程视图的起点 116
5.5 CPU调度 119
5.5.1 CPU调度的含义与算法准则 119
5.5.2 若干CPU调度的基本算法 121
5.5.3 多级反馈队列调度算法的一个具体实现 127
5.6 小结 129
5.7 实践项目4:基于内核栈完成进程切换 129
5.8 习题 138
第6章 进程同步——让多个进程的推进合理有序 141
6.1 进程同步问题与睡眠/唤醒 143
6.2 从信号到信号量 144
6.2.1 利用信号解决同步问题 144
6.2.2 将信号扩展为信号量 146
6.2.3 生产者-消费者同步问题
的信号量解法 149
6.3 临界区——对信号量的保护 150
6.3.1 临界区的引出 150
6.3.2 临界区的软件实现 152
6.3.3 Lamport面包店算法 155
6.3.4 临界区的硬件实现 156
6.4 信号量的实现与使用 159
6.4.1 信号量的使用 159
6.4.2 有正有负的信号量的实现 161
6.4.3 只有正值的信号量的实现 161
6.5 死锁现象及死锁处理 163
6.5.1 死锁现象的出现 163
6.5.2 死锁出现的条件与死锁预防 164
6.5.3 死锁避免 167
6.5.4 死锁检测/恢复与死锁忽略 172
6.6 小结 174
6.7 实践项目5:信号量的实现与应用 174
6.8 习题 175
第7章 内存管理——给程序执行提供一个舞台 177
第8章 换入/换出——用磁盘和时间来换取一个规整的虚拟内存 213
第9章 设备驱动——从文件视图到out指令 229
第10章 文件系统——一个从磁盘到文件再到文件系统的漫长抽象 245
第11章 操作系统安全——从内核迈向操作系统生态的关键一步 287
第12章 网络与分布式系统——从单机操作系统到万物互联时代 309
第13章 图形子系统——迈向用户普及与商业生态 345
第14章 大型实践项目1:内核级线程的设计与实现 371
第15章 大型实践项目2:虚拟内存与交换分区的设计与实现 395
第16章 大型实践项目3:鼠标驱动和简单的图形接口实现 411
第17章 大型实践项目4:网卡驱动与网络协议的设计与实现 439
第18章 大型实践项目5:分布式框架设计与实现 475
第19章 创新实践项目:工业级分布式框架探索 491
参考文献 513
1.1 什么是操作系统 3
1.2 操作系统历史概述 4
1.2.1 简单的批处理系统 5
1.2.2 OS/360的出现 6
1.2.3 UNIX、Linux的诞生 8
1.2.4 操作系统历史的另一个分支——系统服务的演进 10
1.3 操作系统核心轮廓 14
1.3.1 多进程视图与文件视图 14
1.3.2 系统服务 15
1.4 小结 17
1.5 习题 17
第2章 系统启动——打开电源以后发生的故事 19
2.1 计算机工作机理 21
2.2 操作系统启动过程 23
2.2.1 操作系统启动过程实例——第一阶段 23
2.2.2 操作系统镜像的生成——Makefile 33
2.2.3 操作系统启动过程实例——第二阶段 37
2.2.4 操作系统启动过程实例——第三阶段 41
2.2.5 操作系统启动过程实例——第四阶段 45
2.2.6 操作系统启动过程实例——第五阶段 47
2.3 小结 49
2.4 实践项目1:控制操作系统启动 50
2.5 习题 51
第3章 系统接口——通向操作系统内核的大门 53
3.1 用户使用计算机系统的基本形式 55
3.2 基本系统调用及其应用 56
3.2.1 fork()、exec()、wait()、exit() 56
3.2.2 open()read()、write() 59
3.2.3 printf()scanf() 60
3.3 系统调用的实现机理 60
3.3.1 内核态与用户态 60
3.3.2 系统调用与int Ox80 63
3.3.3 printf()的完整故事 65
3.4 通过系统调用窥见操作系统的基本脉络 68
3.5 小结 69
3.6 实践项目2:添加系统调用 69
3.7 习题 72
第4章 多进程——操作系统运行的核心视图 75
4.1 使用CPU 77
4.1.1 CPU工作机理与使用CPU的直观想法 77
4.1.2 问题的引出与并发 78
4.2 进程概念与多进程视图 80
4.2.1 进程与程序 80
4.2.2 CPU管理与多进程视图 81
4.3 多进程引起的基本问题 83
4.3.1 多个进程的组织与进程状态 83
4.3.2 多个进程的切换和调度 85
4.3.3 进程间的影响分离 86
4.3.4 进程间的通信与合作 88
4.4 小结 90
4.5 实践项目3:打印进程日志 91
4.6 习题 94
第5章 线程切换与调度——操作系统的发动机 97
5.1 线程与进程 99
5.1.1 线程概念的引入 99
5.1.2 一个多线程实例 99
5.1.3 线程与进程 101
5.2 用户级线程的切换与创建 102
5.2.1 用户级线程之间的切换 102
5.2.2 用户级线程的创建 105
5.3 内核级线程的切换与创建 108
5.3.1 内核级线程的引出 108
5.3.2 内核级线程之间的切换 111
5.3.3 内核级线程的创建 115
5.4 创建0号/1号进程一多进程视图的起点 116
5.5 CPU调度 119
5.5.1 CPU调度的含义与算法准则 119
5.5.2 若干CPU调度的基本算法 121
5.5.3 多级反馈队列调度算法的一个具体实现 127
5.6 小结 129
5.7 实践项目4:基于内核栈完成进程切换 129
5.8 习题 138
第6章 进程同步——让多个进程的推进合理有序 141
6.1 进程同步问题与睡眠/唤醒 143
6.2 从信号到信号量 144
6.2.1 利用信号解决同步问题 144
6.2.2 将信号扩展为信号量 146
6.2.3 生产者-消费者同步问题
的信号量解法 149
6.3 临界区——对信号量的保护 150
6.3.1 临界区的引出 150
6.3.2 临界区的软件实现 152
6.3.3 Lamport面包店算法 155
6.3.4 临界区的硬件实现 156
6.4 信号量的实现与使用 159
6.4.1 信号量的使用 159
6.4.2 有正有负的信号量的实现 161
6.4.3 只有正值的信号量的实现 161
6.5 死锁现象及死锁处理 163
6.5.1 死锁现象的出现 163
6.5.2 死锁出现的条件与死锁预防 164
6.5.3 死锁避免 167
6.5.4 死锁检测/恢复与死锁忽略 172
6.6 小结 174
6.7 实践项目5:信号量的实现与应用 174
6.8 习题 175
第7章 内存管理——给程序执行提供一个舞台 177
第8章 换入/换出——用磁盘和时间来换取一个规整的虚拟内存 213
第9章 设备驱动——从文件视图到out指令 229
第10章 文件系统——一个从磁盘到文件再到文件系统的漫长抽象 245
第11章 操作系统安全——从内核迈向操作系统生态的关键一步 287
第12章 网络与分布式系统——从单机操作系统到万物互联时代 309
第13章 图形子系统——迈向用户普及与商业生态 345
第14章 大型实践项目1:内核级线程的设计与实现 371
第15章 大型实践项目2:虚拟内存与交换分区的设计与实现 395
第16章 大型实践项目3:鼠标驱动和简单的图形接口实现 411
第17章 大型实践项目4:网卡驱动与网络协议的设计与实现 439
第18章 大型实践项目5:分布式框架设计与实现 475
第19章 创新实践项目:工业级分布式框架探索 491
参考文献 513
前言/序言
目前,计算机系统已经深刻地融入人们日常生活的各个方面,成为工作、学习和生活的重要组成部分。对于计算机科学工作者来说,深刻理解计算机系统的运行机制,具有“系统观”,并在此基础上能够提出分析和解决问题,是必不可少且重要的能力和素养。
在众多计算机学科领域中,操作系统作为计算机系统的核心总控软件,起到了连接硬件、数据库、中间件和应用软件的桥梁作用,是各种信息设备和软件应用运行的重要基础。一个优秀的操作系统不仅能为上层软件构建良好的生态,还能有效管理硬件资源,从而极大地推动整个计算机产业链的发展。本书基于操作系统这一核心,深入讲解了计算机系统的基本工作原理,并融合数据结构、计算机组成原理、编译原理等多门基础课程知识,详述计算机资源如何统一管理与协同工作,以服务于上层应用。通过这种综合性的讲解,读者将能够全面理解计算机系统的运作机制,为今后的研究和实践打下坚实的基础。
当前全球范围内的操作系统和相关技术领域呈现出蓬勃发展的态势。国外的操作系统如Windows、Linux、macOS等已经形成了成熟的生态体系,不仅拥有广泛的应用场景,还吸引了大量的开发者参与其生态建设。同时,国内外的云计算、大数据、人工智能等技术也快速发展,与操作系统形成了紧密的联动。
在此背景下,中国在操作系统领域的研发投入显著增加,取得了许多重要成果。以openEuler、OpenHarmony、麒麟等为代表的国产操作系统快速发展,不仅提升了中国在全球信息技术领域的竞争力,还为相关国产软硬件的规模化商用提供了坚实支持。然而,与国外相比,国内操作系统及相关技术的生态建设仍面临诸多挑战。首先,国内操作系统的市场接受度有待提高,用户习惯和软件兼容性问题需要解决。其次,国内技术生态中的开发者数量和质量相较于国外仍有差距,这限制了创新和发展速度。此外,国内在核心技术研发和标准制定方面也存在短板,需要加大投入。
为了实现国产操作系统的技术突破,本书从操作系统基本原理和操作系统生态两个方面深入介绍现代操作系统的核心技术。一方面,本书以“如何给一个拥有单核CPU、内存、磁盘、键盘和显示器的基本计算机配备一个可实际运转的小操作系统”这一基本问题为主线,围绕这个基本操作系统的六个基本模块,即CPU管理、内存管理、外设管理、磁盘管理与文件系统、用户接口和启动模块,以及这些模块之间的内在联系,深入、细致地讲解了相关原理、算法与数据结构,并借鉴开源操作系统Linux全面分析了整个操作系统的代码实现。另一方面,本书以“如何将一个五脏俱全的小操作系统打造为用户友好的现代操作系统”这一问题为拓展支线,对现代操作系统中的重要系统服务,包括系统安全、网络及分布式结构、用户界面设计与实现三个方面进行了详细的原理讲解与实例分析。本书中以国产开源操作系统OpenHarmony为例,展示了这些服务在商用操作系统中是如何实现良好的用户生态的。
具体而言,本书内容组织如下。第1~10章结合Linux0.11介绍操作系统基本原理:第1章介绍操作系统基本概念及历史回顾;第2章引入操作系统启动五个关键阶段,包括系统上电加载引导代码、构建内存布局、进入主循环、启动系统服务;第3章介绍系统调用原理与Linux接口;第4章阐述操作系统多进程概念;第5章深入多进程调度原理,介绍FCFS、SJF、SRTF等经典进程调度算法;第6章介绍多进程通信协同、信号及信号量的使用方式;第7章介绍操作系统内存管理,包括段式管理、内存分页以及段页式管理三种经典管理方法;第8章着眼于虚拟内存说明如何通过页面映射与换人/换出执行大内存程序;第9章介绍操作系统设备驱动;第10章介绍文件系统及文件系统的五层抽象。第11~13章结合Linux与OpenHarmony介绍现代操作系统关键系统服务:第11章介绍操作系统保护与安全,着眼于如何防止内部崩溃以及抵御外部入侵;第12章介绍操作系统网络与分布式系统,着眼于单机系统如何通过网络互联,并通过分布式抽象形成统一管理系统;第13章介绍操作系统图形子系统,着眼于图形学基本原理以及现代操作系统图形引擎架构。
通过本书的学习,读者可以体会一个完整的操作系统是如何良好运转的,进而体会一个完整的计算机系统又是如何运转的;读者可以获得如何设计和实现一个完整操作系统的直接体验,进而在未来从事计算机系统方面的工作时应用这些经验,逐渐培养计算机系统能力;读者可以进一步与真实的商用操作系统接轨,了解系统服务在用户生态中的关键作用,从而为国产操作系统的发展贡献自己的力量。
为使操作系统原理和实现有机融合,本书设计了8个小型实践项目和6个大型实践项目,其中包括了针对基本操作系统管理模块、先进分布式操作系统服务设计以及基于真实商用Linux与OpenHarmony平台的系统服务的实践,相信读者在完成这14个实践项目以后,会对操作系统的认识和操控力有质的飞跃,提升分析与设计大型复杂软件系统的工程素质和软件开发能力。
最后,非常感谢华为终端有限公司和曙光信息产业股份有限公司对教育部产学合作协同育人项目的大力支持。同时,在本书的编写过程中,得到了北京大学陈向群、国防科技大学王志英、西北工业大学周兴社、国防科技大学罗宇、南京大学骆斌、四川大学朱敏等各位专家的悉心指导和热情鼓励;感谢厦门大学郑炜、宁波工程学院陆超泽等老师的试用反馈;感谢哈尔滨工业大学(深圳)的仇洁婷、陈俊杰等老师,还有潘延麒、曾培鑫、陈佳豪、陈柏居、杨大荣等同学为本书所做的贡献。
本书广泛地参考了国内外相关经典操作系统教材以及开源社区真实项目案例,既争取深刻反映操作系统的经典工作原理,又力求保持理念与技术上的与时俱进。但是,由于操作系统始终是伴随着计算机硬件发展演进的一门学科,而且如今计算机操作系统的发展流派分支众多,新的概念、技术方法层出不穷;加之作者水平有限,在编写中难免存在不足。因此欢迎广大读者对本书提出宝贵意见,以便在后续版本中予以完善与改进。
作者
2025年4月
在众多计算机学科领域中,操作系统作为计算机系统的核心总控软件,起到了连接硬件、数据库、中间件和应用软件的桥梁作用,是各种信息设备和软件应用运行的重要基础。一个优秀的操作系统不仅能为上层软件构建良好的生态,还能有效管理硬件资源,从而极大地推动整个计算机产业链的发展。本书基于操作系统这一核心,深入讲解了计算机系统的基本工作原理,并融合数据结构、计算机组成原理、编译原理等多门基础课程知识,详述计算机资源如何统一管理与协同工作,以服务于上层应用。通过这种综合性的讲解,读者将能够全面理解计算机系统的运作机制,为今后的研究和实践打下坚实的基础。
当前全球范围内的操作系统和相关技术领域呈现出蓬勃发展的态势。国外的操作系统如Windows、Linux、macOS等已经形成了成熟的生态体系,不仅拥有广泛的应用场景,还吸引了大量的开发者参与其生态建设。同时,国内外的云计算、大数据、人工智能等技术也快速发展,与操作系统形成了紧密的联动。
在此背景下,中国在操作系统领域的研发投入显著增加,取得了许多重要成果。以openEuler、OpenHarmony、麒麟等为代表的国产操作系统快速发展,不仅提升了中国在全球信息技术领域的竞争力,还为相关国产软硬件的规模化商用提供了坚实支持。然而,与国外相比,国内操作系统及相关技术的生态建设仍面临诸多挑战。首先,国内操作系统的市场接受度有待提高,用户习惯和软件兼容性问题需要解决。其次,国内技术生态中的开发者数量和质量相较于国外仍有差距,这限制了创新和发展速度。此外,国内在核心技术研发和标准制定方面也存在短板,需要加大投入。
为了实现国产操作系统的技术突破,本书从操作系统基本原理和操作系统生态两个方面深入介绍现代操作系统的核心技术。一方面,本书以“如何给一个拥有单核CPU、内存、磁盘、键盘和显示器的基本计算机配备一个可实际运转的小操作系统”这一基本问题为主线,围绕这个基本操作系统的六个基本模块,即CPU管理、内存管理、外设管理、磁盘管理与文件系统、用户接口和启动模块,以及这些模块之间的内在联系,深入、细致地讲解了相关原理、算法与数据结构,并借鉴开源操作系统Linux全面分析了整个操作系统的代码实现。另一方面,本书以“如何将一个五脏俱全的小操作系统打造为用户友好的现代操作系统”这一问题为拓展支线,对现代操作系统中的重要系统服务,包括系统安全、网络及分布式结构、用户界面设计与实现三个方面进行了详细的原理讲解与实例分析。本书中以国产开源操作系统OpenHarmony为例,展示了这些服务在商用操作系统中是如何实现良好的用户生态的。
具体而言,本书内容组织如下。第1~10章结合Linux0.11介绍操作系统基本原理:第1章介绍操作系统基本概念及历史回顾;第2章引入操作系统启动五个关键阶段,包括系统上电加载引导代码、构建内存布局、进入主循环、启动系统服务;第3章介绍系统调用原理与Linux接口;第4章阐述操作系统多进程概念;第5章深入多进程调度原理,介绍FCFS、SJF、SRTF等经典进程调度算法;第6章介绍多进程通信协同、信号及信号量的使用方式;第7章介绍操作系统内存管理,包括段式管理、内存分页以及段页式管理三种经典管理方法;第8章着眼于虚拟内存说明如何通过页面映射与换人/换出执行大内存程序;第9章介绍操作系统设备驱动;第10章介绍文件系统及文件系统的五层抽象。第11~13章结合Linux与OpenHarmony介绍现代操作系统关键系统服务:第11章介绍操作系统保护与安全,着眼于如何防止内部崩溃以及抵御外部入侵;第12章介绍操作系统网络与分布式系统,着眼于单机系统如何通过网络互联,并通过分布式抽象形成统一管理系统;第13章介绍操作系统图形子系统,着眼于图形学基本原理以及现代操作系统图形引擎架构。
通过本书的学习,读者可以体会一个完整的操作系统是如何良好运转的,进而体会一个完整的计算机系统又是如何运转的;读者可以获得如何设计和实现一个完整操作系统的直接体验,进而在未来从事计算机系统方面的工作时应用这些经验,逐渐培养计算机系统能力;读者可以进一步与真实的商用操作系统接轨,了解系统服务在用户生态中的关键作用,从而为国产操作系统的发展贡献自己的力量。
为使操作系统原理和实现有机融合,本书设计了8个小型实践项目和6个大型实践项目,其中包括了针对基本操作系统管理模块、先进分布式操作系统服务设计以及基于真实商用Linux与OpenHarmony平台的系统服务的实践,相信读者在完成这14个实践项目以后,会对操作系统的认识和操控力有质的飞跃,提升分析与设计大型复杂软件系统的工程素质和软件开发能力。
最后,非常感谢华为终端有限公司和曙光信息产业股份有限公司对教育部产学合作协同育人项目的大力支持。同时,在本书的编写过程中,得到了北京大学陈向群、国防科技大学王志英、西北工业大学周兴社、国防科技大学罗宇、南京大学骆斌、四川大学朱敏等各位专家的悉心指导和热情鼓励;感谢厦门大学郑炜、宁波工程学院陆超泽等老师的试用反馈;感谢哈尔滨工业大学(深圳)的仇洁婷、陈俊杰等老师,还有潘延麒、曾培鑫、陈佳豪、陈柏居、杨大荣等同学为本书所做的贡献。
本书广泛地参考了国内外相关经典操作系统教材以及开源社区真实项目案例,既争取深刻反映操作系统的经典工作原理,又力求保持理念与技术上的与时俱进。但是,由于操作系统始终是伴随着计算机硬件发展演进的一门学科,而且如今计算机操作系统的发展流派分支众多,新的概念、技术方法层出不穷;加之作者水平有限,在编写中难免存在不足。因此欢迎广大读者对本书提出宝贵意见,以便在后续版本中予以完善与改进。
作者
2025年4月
📑 Table of Contents
- 操作系统概念及其发展概述
- 系统启动——打开电源以后发生的故事
- 系统接口——通向操作系统内核的大门
- 多进程——操作系统运行的核心视图
- 线程切换与调度——操作系统的发动机
- 内存管理——操作系统的存储体系
- 设备驱动——操作系统与硬件的桥梁
- 文件系统——数据的持久化存储
- 操作系统安全机制
- 网络与分布式系统服务
- 图形子系统实现原理
- 实践项目:从零构建小操作系统