本书以三个“面向”为导向,即面向经典基础理论与方法,面向国际前沿研究,面向工业界实践,深入浅出地介绍操作系统的理论、架构、设计方法与具体实现。本书是首本以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的统计,其近5年(2015~2019)在操作系统领域高水平会议(SOSP/OSDI、EuroSys、USENIX ATC和FAST)上发表的论文数居世界第一。
夏虞斌
上海交通大学副教授、博导,CCF高级会员。主要研究领域为操作系统、体系结构和系统安全,曾任OSDI、EuroSys等多个国际会议的程序委员会委员。领导团队研发的安全操作系统T6获得2015年“挑战杯”全国大学生课外学术科技作品竞赛和中国大学生创业计划竞赛特等奖、2019年中国“互联网+”大学生创新创业大赛全国银奖,并已实现产业化,实际部署设备数量过亿;基于RISC-V平台研发的可信执行环境软硬件系统“蓬莱”现已开源。
......(更多)
序言一
序言二
前言
第一部分 操作系统基础
第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
......(更多)
当然,RCU 并非完美,其最大限制为其仅适用于能够使用订阅/发布机制来更新的对象。对于双向链表这种更为复杂的数据结构,由于需要同时更新两个指针,RCU 就很难实现。
......(更多)