猜你喜欢
openEuler操作系统(第2版)

openEuler操作系统(第2版)

书籍作者:任炬 ISBN:9787302602941
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:6654
创建日期:2023-04-05 发布日期:2023-04-05
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

本书是一部系统解析操作系统原理及 openEuler核心技术的著作。为便于读者高效学习,本书结合openEuler中的实现代码,详细介绍操作系统的基本原理和核心技术。全书分为12章:第1章介绍操作系统的基本概念、发展历史、基本功能、设计目标、主流操作系统、发展趋势,以及 openEuler操作系统;第2章介绍鲲鹏处理器的体系架构、CPU 编程模型、CPU 访存原理,以及鲲鹏处理器与openEuler;第3章介绍进程的概念、进程的描述、进程的控制、系统调用、进程切换及线程;第4章介绍调度性能指标、常见的调度算法、多核调度及 CFS调度;第5章介绍虚拟内存、分页机制、地址转换加速机制、多级页表及物理内存扩充机制;第6章介绍互斥与锁、自旋锁、同步与信号量、共享内存、消息传递等机制及内存屏障技术;第7章介绍文件系统的基本实现、I/O 性能优化、崩溃一致性及虚拟文件系统;第8章介绍 TCP/IP协议栈、openEuler的网络子系统架构、网卡驱动程序、套接字、数据的传输路径及新型网络加速技术;第9章介绍虚拟机监视器的基本概念和基本任务、openEuler的虚拟化平台———StratoVirt;第10章介绍容器的基本原理与构建过程及华为容器引擎iSulad;第11章介绍可信计算相关知识、可信平台模块规范、系统启动路

径及openEuler的可信启动实现技术;第12章介绍 A-Tune的基本原理及其智能决策和自动调优两个核心模块的关键技术。

本书适合作为广大高校计算机专业操作系统课程的教辅教材,也可以作为操作系统内核开发者的自学参考用书。


作者简介

张尧学 中国工程院院士,清华大学计算机系教授,教育部软件工程专业教指委主任委员,国务院学位委员会计算机学科评议组召集人。长期从事操作系统、新型网络计算模式、计算机网络等领域的研究。以第一完成人获得国家自然科学奖一等奖1项(2014年),国家技术发明奖二等奖1项(2004年),国家科技进步奖二等奖2项(2001年和1998年),省部级奖励5项,何梁何利基金科学与技术进步奖(2005年)。曾任中南大学校长(2011—2017年)。现担任《电子学报》(英文版)主编。

任炬 清华大学计算机系副教授,博士生导师,国家优秀青年基金获得者,湖南省杰出青年基金获得者。研究方向包括物联网、操作系统、边缘计算等。在国际著名期刊及会议上发表论文100余篇。曾获IEEE通信学会亚太区最佳青年学者奖、IEEE可拓展计算专委会早期职业成就奖等荣誉。担任《电子学报》(中文版和英文版)、IEEE Transactions on Vehicular Technology等多个国内外重要期刊编委,曾任多个国际会议主席、程序委员会主席、领域主席等职务。


编辑推荐

华为公司官方出品!著名计算机科学家张尧学院士团队编著!深入解析华为自研操作系统原理核心技术!

前言

操作系统作为最核心的基础软件,被誉为计算机的“灵魂”。无论计算机相关专业的学生或研究人员,还是计算机应用开发人员,对操作系统原理的学习和理解都至关重要,而通过全面分析一个优秀操作系统的设计思路及实现方案加深对操作系统原理的理解和应用,是操作系统学习过程中一个行之有效的方法。

本书以openEuler操作系统的具体设计与实现为例,详细介绍当代操作系统的基本原理和核心思想。openEuler是华为公司发布的一个开源、免费的Linux发行版平台,其前身是华为公司历经近10年研制和发展的服务器操作系统EulerOS,以安全、稳定、高效为目标,成功支持了华为公司的各种产品和解决方案。自本书第1版于2020年10月发行以来,openEuler开源社区快速成长,openEuler操作系统也增加了很多新的功能与技术。第2版在对第1版部分内容勘误的基础上,新增了openEuler的虚拟化平台StratoVirt介绍,以及操作系统的可信启动原理和openEuler的可信启动实现技术等内容。

本书注重理论与实践的紧密结合,以实际案例引出操作系统的基本原理,再以openEuler的具体实现阐述操作系统的设计思想,让读者更深入理解操作系统核心技术的设计动机和实现方案。全书分为12章,涵盖了操作系统概述、鲲鹏处理器、进程与线程、CPU调度、内存管理、线程/进程间通信、文件系统、跨机器通信、系统虚拟化、容器、可信启动及openEuler智能调优——ATune等操作系统核心内容和openEuler操作系统的特色创新技术。

本书定位为操作系统课程的教学参考书,其主要受众包括计算机相关专业的本科生和研究生、从事计算机相关领域研究的专业人士及对计算机操作系统原理感兴趣的读者。因操作系统作为管理计算机硬件资源的核心软件,且现代操作系统设计往往与硬件特性结合紧密,所以读者在阅读此书前,除需要掌握基本的编程基础外(本书采用C语言),还需要了解一定的计算机组成原理和汇编语言知识。

作者首先要感谢华为公司张相锋博士、伍伯东、赵磊、朱晨、桂耀、吴财军、魏刚、张天行、杨铭、蔡灏旻、卢景晓、刘昊、吴景、雷钟凯及众多华为工程师在本次改版过程中提供的相关资料与技术支持。他们在本书的撰写和修订过程中,提出了非常详尽的意见和建议,对提升本书的质量提供了非常大的帮助。特别感谢中南大学透明计算实验室操作系统小组全体同学(卢军、高迎港、郭旭城、丁标、左倩、瞿沁麒、王恒宇、王灏洋、黄旺、向侃、李依伦、谢禹)对本书改版工作所做出的极大贡献。感谢清华大学出版社盛东亮老师和钟志芳老师等的大力支持,他们细致且高效的工作保证了本书的质量,让本书得以尽早与公众见面。

由于编者水平有限,书中难免有疏漏和不足之处,恳请读者批评指正!


编者

2022年4月


目录

第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操作系统的设计目标00

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.7openEuler操作系统简介0

本章小结0

第2章鲲鹏处理器0

2.1鲲鹏处理器概述0

2.2体系架构0

2.3CPU编程模型0

2.3.1中断与异常0

2.3.2异常级别0

2.3.3寄存器0

2.3.4指令集0

2.4CPU访存原理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.5openEuler中的进程树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.3openEuler中线程的实现0

本章小结0

第4章CPU调度0

4.1调度性能指标0

4.2常见的调度算法0

4.2.1先进先出0

4.2.2最短进程优先

4.2.3轮转调度

4.2.4优先级调度

4.3多核调度

4.3.1多核调度的背景

4.3.2多核调度策略

4.4CFS调度

4.4.1调度策略和进程类别

4.4.2调度类

4.4.3调度队列和调度实体

4.4.4CFS调度策略

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.1TLB与局部性原理

5.3.2TLB结构

5.3.3TLB替换

5.4更小的页表

5.4.1多级页表

5.4.2openEuler中的多级页表

5.4.3标准大页

5.5物理内存扩充

5.5.1请求调页

5.5.2交换空间

5.5.3openEuler中页交换的实现

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.2Qspinlock

6.2.3NUMAAware 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.4openEuler中内存屏障的应用

本章小结

第7章文件系统

7.1文件系统概述

7.1.1硬件基础

7.1.2文件系统中的基本概念

7.1.3openEuler中的文件系统

7.1.4Ext4文件系统的发展历程

7.2文件系统的基本实现

7.2.1数据结构及其磁盘布局

7.2.2文件的读取和写入

7.3I/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.2TCP/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.2Socket的连接

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.1RDMA

8.6.2DPDK

8.6.3智能网卡

8.6.4SDN

本章小结

第9章系统虚拟化

9.1虚拟机监视器

9.1.1基本概念

9.1.2虚拟化的好处

9.1.3虚拟化的类型

9.2基于Linux内核的虚拟机监视器

9.2.1VHE

9.2.2QEMU

9.2.3KVM

9.2.4StratoVirt

9.2.5Libvirt

9.3CPU虚拟化

9.3.1基本思想

9.3.2虚拟机受限制的执行

9.3.3上下文切换

9.4内存虚拟化

9.4.1基本思想

9.4.2地址映射

9.4.3截获访存请求

9.5I/O虚拟化

9.5.1三个基本任务

9.5.2三种实现方式

9.6openEuler的虚拟化平台——StratoVirt

9.6.1StratoVirt的介绍

9.6.2CPU虚拟化的实现

9.6.3内存虚拟化的实现

9.6.4I/O虚拟化的实现

9.6.5StratoVirt的其他特性

本章小结

第10章容器

10.1容器概述

10.1.1容器的基本概念

10.1.2容器的发展历史

10.1.3容器的应用场景

10.1.4容器引擎iSulad

10.2命名空间(namespace)

10.2.1命名空间简介

10.2.2命名空间使用举例

10.2.3命名空间的实现

10.3控制组(cgroups)

10.3.1cgroups简介

10.3.2cgroups使用举例

10.3.3cgroups的实现

10.3.4CPU子系统对CPU资源的管理

10.3.5cgroups V2

10.4容器镜像

10.4.1容器镜像简介

10.4.2镜像的构成方式和底层原理

10.4.3容器镜像的构建模型和构建流程

10.4.4常用的镜像构建工具

10.4.5容器镜像的分发

10.5容器引擎iSulad原理剖析

10.5.1iSulad架构简介

10.5.2容器与镜像操作示例

10.5.3实现原理剖析

10.6容器集群的管理

10.6.1容器集群管理系统——Kubernetes

10.6.2云提供商的容器集群管理平台

本章小结

第11章可信启动

11.1可信计算

11.1.1可信计算的背景

11.1.2可信计算相关的概念

11.2可信平台模块

11.2.1TPM规范简介

11.2.2TPM硬件模块

11.2.3TPM架构及相关组件

11.2.4命令处理流程

11.3启动路径与可信启动

11.3.1BIOS与UEFI

11.3.2启动路径的安全挑战

11.3.3可信启动介绍

11.3.4openEuler的可信启动

本章小结

第12章openEuler智能调优——ATune

12.1基本原理

12.2智能决策

12.3自动调优

本章小结

参考文献

附录A缩略语

产品特色