描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302563280丛书名: 华为智能计算技术丛书
华为公司官方出品!著名计算机科学家张尧学院士主编!深入解析操作系统原理及openEuler核心技术!华为技术有限公司 创立于1987年,是全球领先的ICT(Information and Communications Technology,信息和通信技术)基础设施和智能终端提供商,致力于把数字世界带入每个人、每个家庭、每个组织,构建万物互联的智能世界。目前,华为约有19.4万名员工,业务遍及170多个国家和地区,为30多亿人提供服务。华为在通信网络、IT、智能终端和云服务等领域为客户提供有竞争力、安全可信赖的产品、解决方案与服务,与生态伙伴开放合作,持续为客户创造价值,释放个人潜能,丰富家庭生活,激发组织创新。华为坚持围绕客户需求持续创新,加大基础研究投入,厚积薄发,推动世界进步。
本书是一部系统解析操作系统原理及openEuler核心技术著作。为便于读者高效学习,本书结合openEuler中的实现代码,详细介绍了操作系统的基本原理和核心技术。全书共分为10章: 第1章操作系统概述,介绍了操作系统的基本概念、发展历史、基本功能、设计目标、发展趋势,以及openEuler简介; 第2章鲲鹏处理器,介绍了鲲鹏处理器的体系架构、CPU编程模型、CPU访存原理,以及鲲鹏处理器与openEuler; 第3章进程与线程,介绍了进程的概念、进程描述、进程控制、系统调用、进程切换机制及线程; 第4章CPU调度,介绍了调度性能指标、常见调度算法、多核调度策略及CFS调度器; 第5章内存管理,介绍了虚拟内存、分页机制、地址转换加速机制、多级页表及物理内存扩充机制; 第6章线程/进程间通信,介绍了互斥与锁、自旋锁、同步与信号量、共享内存、消息传递等机制及内存屏障技术; 第7章文件系统,介绍了文件系统的基本实现、I/O性能优化、崩溃一致性及虚拟文件系统; 第8章跨机器通信,介绍了TCP/IP协议栈、openEuler的网络子系统架构、网卡驱动程序、套接字、数据传输路径及新型网络加速技术; 第9章系统虚拟化,介绍了虚拟机监视器的基本概念和基本任务、基于Linux内核的虚拟机监视器及容器技术; 第10章openEuler智能调优——ATune,介绍了ATune的基本原理及其智能决策和自动调优两个核心模块的关键技术。
本书适合作为广大高校计算机专业操作系统课程的辅助教材,也可以作为操作系统内核开发者的自学参考用书。
第1章 操作系统概述00
1.1 操作系统的基本概念00
1.2 操作系统的发展历史00
1.2.1 手工操作时代00
1.2.2 批处理系统00
1.2.3 多道程序系统00
1.2.4 分时操作系统00
1.2.5 实时操作系统00
1.3 操作系统的基本功能00
1.4 操作系统的设计目标0
1.5 主流操作系统0
1.5.1 终端操作系统0
1.5.2 服务器操作系统0
1.6 操作系统的发展趋势0
1.6.1 微内核0
1.6.2 库操作系统0
1.6.3 外内核0
1.6.4 多内核0
1.6.5 离散化内核0
1.7 openEluer操作系统简介0
本章小结0
第2章 鲲鹏处理器0
2.1 鲲鹏处理器概述0
2.2 体系架构0
2.3 CPU编程模型0
2.3.1 中断与异常0
2.3.2 异常级别0
2.3.3 寄存器0
2.3.4 指令集0
2.4 CPU访存原理0
2.4.1 存储器的层次结构0
2.4.2 内存0
2.4.3 内存管理单元0
2.5 鲲鹏处理器与openEuler0
本章小结0
第3章 进程与线程0
3.1 进程的概念0
3.1.1 程序: 从源代码到执行0
3.1.2 程序的并发执行与进程抽象0
3.2 进程的描述0
3.2.1 进程控制块0
3.2.2 进程状态0
3.3 进程的控制0
3.3.1 进程控制原语0
3.3.2 进程创建0
3.3.3 程序装载0
3.3.4 进程终止0
3.3.5 openEuler中的进程树0
3.4 系统调用0
3.4.1 基本概念0
3.4.2 系统调用的实现0
3.5 进程切换0
3.5.1 基本原理0
3.5.2 进程切换过程0
3.6 线程0
3.6.1 基本概念0
3.6.2 线程模型0
3.6.3 openEuler中线程的实现
本章小结
openEuler操作系统
第4章 CPU调度
4.1 调度性能指标
4.2 常见的调度算法
4.2.1 先进先出
4.2.2 短进程优先
4.2.3 轮转调度
4.2.4 优先级调度
4.3 多核调度
4.3.1 多核调度的背景
4.3.2 多核调度策略
4.4 CFS调度
4.4.1 调度策略和进程类别
4.4.2 调度类
4.4.3 调度队列和调度实体
4.4.4 CFS调度策略
4.4.5 调度过程
本章小结
第5章 内存管理
5.1 内存访问: 从直接到间接
5.1.1 程序中的内存访问
5.1.2 虚拟内存
5.2 分页
5.2.1 基本思想
5.2.2 空闲页框管理
5.2.3 地址转换
5.2.4 内存访问控制
5.3 更快的地址转换
5.3.1 TLB与局部性原理
5.3.2 TLB结构
5.3.3 TLB替换
5.4 更小的页表
5.4.1 多级页表
5.4.2 openEuler中的多级页表
5.4.3 标准大页
5.5 物理内存扩充
5.5.1 请求调页
5.5.2 交换空间
5.5.3 openEuler中页交换的实现
5.5.4 页置换策略
本章小结
第6章 线程/进程间通信
6.1 互斥与锁
6.1.1 竞态条件
6.1.2 原子性与互斥
6.1.3 互斥的实现: 控制中断
6.1.4 互斥的实现: 锁
6.2 自旋锁
6.2.1 基本思想
6.2.2 Qspinlock
6.2.3 NUMAAware Qspinlock
6.3 同步与信号量
6.3.1 基本思想
6.3.2 信号量的实现
6.3.3 生产者与消费者问题
6.4 共享内存
6.4.1 基本思想
6.4.2 共享内存的实现
6.5 消息传递
6.5.1 基本思想
6.5.2 消息传递的实现
6.6 内存屏障
6.6.1 现代CPU对程序执行的影响
6.6.2 内存屏障指令
6.6.3 内存顺序模型
6.6.4 openEuler中内存屏障的应用
本章小结
第7章 文件系统
7.1 文件系统概述
7.1.1 硬件基础
7.1.2 文件系统中的基本概念
7.1.3 openEuler中的文件系统
7.1.4 Ext4文件系统的发展历程
7.2 文件系统的基本实现
7.2.1 数据结构及其磁盘布局
7.2.2 文件的读取和写入
7.3 I/O性能优化
7.3.1 缓存与缓冲
7.3.2 多级索引与Extent
7.4 崩溃一致性
7.4.1 简介
7.4.2 文件系统检查器
7.4.3 日志
7.5 虚拟文件系统
7.5.1 简介
7.5.2 数据结构
本章小结
第8章 跨机器通信
8.1 计算机网络
8.1.1 简介
8.1.2 TCP/IP协议栈
8.2 网络子系统
8.2.1 硬件视角
8.2.2 软件视角
8.3 网卡驱动程序
8.3.1 简介
8.3.2 驱动程序的注册与注销
8.3.3 设备初始化
8.3.4 设备的打开与关闭
8.4 套接字
8.4.1 简介
8.4.2 Socket的连接
8.4.3 数据的传输
8.5 数据的传输路径
8.5.1 数据报文收发的整体流程
8.5.2 接收报文的阶段: NIC>Rx ring
8.5.3 接收报文的第二阶段: Rx ring>sk_buff
8.5.4 接收报文的第三阶段: sk_buff>进程
8.6 新型网络加速技术
8.6.1 RDMA
8.6.2 DPDK
8.6.3 智能网卡
8.6.4 SDN
本章小结
第9章 系统虚拟化
9.1 虚拟机监视器
9.1.1 基本概念
9.1.2 虚拟化的好处
9.1.3 虚拟化的类型
9.2 基于Linux内核的虚拟机监视器
9.2.1 VHE
9.2.2 KVM
9.2.3 QEMU
9.2.4 Libvirt
9.3 CPU虚拟化
9.3.1 基本思想
9.3.2 受限制的执行
9.3.3 上下文切换
9.3.4 openEuler中的实现
9.4 内存虚拟化
9.4.1 基本思想
9.4.2 地址映射
9.4.3 访存请求截获
9.4.4 openEuler中的实现
9.5 I/O虚拟化
9.5.1 三个基本任务
9.5.2 三种实现方式
9.5.3 openEuler中的实现
9.6 容器
9.6.1 简介
9.6.2 命名空间
9.6.3 控制组
9.6.4 iSulad容器原理
本章小结
第10章 openEuler智能调优——ATune
10.1 基本原理
10.2 智能决策
10.3 自动调优
本章小结
参考文献
附录A缩略语
序:openEuler推动开源创新
Linux作为使用广泛的操作系统发展了近30年,已经成为IT(Information Technology)产业基础的平台。openEuler是一个基于Linux Kernel(内核)的开源社区,也是一个开放创新的平台,不但承载着对鲲鹏等多种芯片架构的支持,而且承载着对操作系统、体系架构未来的探索任务。openEuler社区终会成为一个引领技术创新的开源生态系统。开源是一种产业生态的建设模式,在世界范围内,越来越多的公司利用开源促进产业链生态的建设,甚至引导产业的发展方向,形成了从开源社区到基于开源的企业级产品与服务的生态链。
开源是一种协作创新模式,通过开源,软件开发的速度大大加快,产业标准的形成时间大大缩短。同时,开放协作的环境更容易激发创新的思维和创造的灵感,对于开源社区不断涌现的创新,我们已经喜闻乐见。
开源也是一种文化交流的方式,通过开源,可以集合全世界的智慧,在世界的不同角落,共同协作完成大型软件系统的开发和演进。这在很大程度上也加深了世界人民之间的沟通和了解。我始终相信,沟通与交流是全世界构建美好未来的钥匙。
华为公司持续投入基础软件的建设,现在将历史的积累贡献出来,创建了openEuler社区,并且基于openEuler操作系统编写了本书。全书深入地介绍了openEuler操作系统的设计原理与实现细节,并结合鲲鹏芯片对软硬件协同设计做了简明扼要的讲解。
我相信,本书仅仅是一个开始,读者想要真正学以致用就要参与到社区中去,希望广大师生能融入到openEuler社区中,去沟通、去分享、去贡献、去创造,共同推动操作系统研究的发展与创新。
华为云与计算BG总裁侯金龙
2020年8月
前言
操作系统作为核心的基础软件,也被誉为计算机的“灵魂”。无论对于计算机相关专业的学生或研究人员,还是对于计算机应用开发人员,对操作系统原理的学习和理解都至关重要,而通过全面分析一个优秀操作系统的设计思路和实现方案来加深对操作系统原理的理解和应用,是操作系统学习过程中一个行之有效的方法。
本书以openEuler操作系统的具体设计与实现为例,详细介绍了当代操作系统的基本原理和核心思想。openEuler是华为公司发布的一个开源、免费的Linux发行版平台,其前身是华为公司历经近十年研制和发展的服务器操作系统EulerOS,以安全、稳定、高效为目标,成功支持了华为的各种产品和解决方案。本书作为本详细介绍openEuler操作系统技术原理的书籍,作者也希望能借此让更多读者和组织了解openEuler,共同推动openEuler社区的发展。
本书注重理论与实践的紧密结合,通过以实际案例来引出操作系统的基本原理,再以openEuler的具体实现来阐述操作系统的设计思想,让读者更深入理解操作系统核心技术的设计动机和实现方案。全书共分为10章,涵盖了操作系统概述、鲲鹏处理器、进程与线程、CPU调度、内存管理、线程/进程间通信、文件系统、跨机器通信、系统虚拟化以及openEuler智能调优——ATune等操作系统核心内容和openEuler操作系统的特色创新技术。
本书定位为操作系统课程的教学参考书,其主要受众包括计算机相关专业的本科生和研究生、从事计算机相关领域研究的专业人士及对计算机操作系统原理感兴趣的读者。因操作系统作为管理计算机硬件资源的核心软件,且现代操作系统设计往往与硬件特性结合紧密,所以读者在阅读此书前,除需要掌握基本的编程基础外(本书采用C语言),还需要了解一定的计算机组成原理和汇编语言知识。
作者首先要感谢华为公司张相锋博士、赵磊、朱晨及众多华为工程师在本书写作过程中提供的相关资料与技术支持。他们在本书的撰写和修订过程中,提出了非常详尽的意见和建议,对提升本书的质量提供了非常大的帮助。特别感谢中南大学透明计算实验室操作系统小组全体同学(卢军、高迎港、郭旭城、丁标、左倩、瞿沁麒、王恒宇、王灏洋)对本书撰写工作所做出的极大贡献。本书的筹备时间非常紧促且正值新冠疫情期间,大家共同全力以赴才保证了本书的顺利完成。感谢清华大学出版社盛东亮老师和钟志芳等老师的大力支持,他们细致且高效的工作保证了本书的质量,又让本书得以尽早与公众见面。由于编者水平有限,书中难免有疏漏和不足之处,恳请读者批评指正!
作者
2020年8月
韩乃平 麒麟软件有限公司执行总裁
国际上基于Linux内核的操作系统社区版本有很多,但与国内CPU深入优化融合的很少;openEuler作为一个开源、免费、通用的 Linux服务器操作系统社区平台,通过开放的形式与国内外开发者共同构建开放、多元和架构包容的软件生态体系。本书从介绍操作系统概念、鲲鹏处理器开始,较为全面地描述了openEuler的原理与实现,对于参与openEuler社区开发工作,以及基于openEuler二次开发研制操作系统版本,都具有较高的参考价值。
陈海波 上海交通大学软件学院教授,国家杰出青年科学基金获得者
操作系统是计算机的“灵魂”,而对操作系统原理的深刻理解则依赖于实践。本书内容较新、知识点覆盖较为全面,并结合openEuler源码,对操作系统的核心模块做了详尽的介绍。对于想掌握操作系统原理的初学者,或是想致力于openEuler社区贡献的研发人员,本书都具有重要的参考价值。期待广大开发者从本书开始,从openEuler社区开始,共同促进国内系统软件的发展与繁荣。
武延军 中科院软件所智能软件研究中心主任
操作系统因其重要的学术和产业价值,成为国内外备受关注的领域。作为一门实践性质很强的学科,操作系统的高质量发展需要更多的实战型人才。本书针对工业级开源操作系统社区发行版openEuler,结合鲲鹏处理器的微架构特性,详细讲解操作系统的原理和实践,既扩充了openEuler开源社区的教学版图,又有望引导操作系统教学向实践倾斜。作为openEuler的深度参与者,我相信本书能够为广大学生和一线工程师提供更为直接的原理和实战指导。
张磊 统信软件技术有限公司高级副总裁
中国在基础核心软硬件,尤其在操作系统与处理器方面与世界水平仍有相当大的差距。在当前形势下,发展我们自己的操作系统具有更为重要的意义。openEuler是一款优秀的操作系统,统信软件也是openEuler的积极贡献者之一。本书对openEuler操作系统关键模块的原理与实现娓娓道来,也进一步分析其特有的实现,对于学习openEuler,进而参与相应系统的研发人员具有极大的帮助。“积水成渊,蛟龙生焉”,要想成就真“龙”,从本书开始是一个不错的选择。
江大勇 华为计算鲲鹏领域副总裁(基础软件)
操作系统是计算产业生态的关键,在软硬件堆栈中承上启下,是基础软件的基点、是生态的起点。开源社区是一种快速技术创新,提高社会、企业协作效率的软件生产模式,共建、共享、共治是openEuler社区的协作文化。本书对操作系统*关键的调度、文件系统、通信、内存管理、虚拟化等做了详尽的讲解,对操作系统与ARM处理器的结合进行了深入的分析。相信本书能引领openEuler操作系统系列书的出版,期待看到更多、更丰富的书,期待广大开发者、企业、组织加入openEuler社区,共同创造历史。
评论
还没有评论。