描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111756880
编辑推荐
(1)作者资深:作者一直从事编译器和嵌入式系统软件的设计工作。(2)内容干货:深入解析前沿技术,掌握核心架构与实现,驾驭未来的嵌入式系统。
内容简介
内容简介本书由资深虚拟化专家撰写,辅以大量验证式案例,提供参考源码。本书从解读虚拟化技术、Hypervisor产品入手,之后深入剖析嵌入式Hypervisor的架构、设计与实现、高级应用。阅读本书,不仅能提升读者对嵌入式Hypervisor的认知,还能助力汽车、航空航天等高安全需求行业打造适用的产品,构建基于Hypervisor的软件生态。全书共15章,从逻辑上分为三部分。第一部分(第1~2章)介绍Hypervisor基础,涵盖虚拟化技术与实现、主流的嵌入式Hypervisor产品,以及基于分离内核的嵌入式Hypervisor等内容。第二部分(第3~12章)介绍嵌入式Hypervisor的设计与实现,涵盖嵌入式Hypervisor架构与核心组件、中断隔离技术、内存隔离技术、循环表调度器、健康监控、分区间通信技术、内核资源管理模型、系统初始化过程、内核服务、PRTOS的配套工具等内容。第三部分(第13~15章)介绍嵌入式Hypervisor的高级应用和PRTOS未来规划,涵盖μC/OS-II与Linux内核的虚拟化过程以及PRTOS社区的愿景等内容。
目 录
目 录
前言
第1章 Hypervisor概述 / 1
1.1 虚拟化技术与实现 / 1
1.1.1 CPU虚拟化 / 2
1.1.2 I/O虚拟化 / 5
1.1.3 为什么需要虚拟化技术 / 6
1.1.4 虚拟化的实现 / 8
1.2 面向桌面和企业云的Hypervisor
类型和产品 / 13
1.3 嵌入式Hypervisor / 14
1.3.1 嵌入式Hypervisor概述 / 14
1.3.2 嵌入式Hypervisor的
设计理念 / 16
1.4 主流的嵌入式Hypervisor
产品 / 19
1.4.1 国外RTOS厂商的Hypervisor
产品 / 19
1.4.2 开源嵌入式Hypervisor产品 / 22
1.4.3 国内RTOS 厂商的Hypervisor
产品 / 24
1.5 本章小结 / 24
第2章 基于分离内核的嵌入式
Hypervisor / 25
2.1 分区和分离内核 / 25
2.2 嵌入式Hypervisor的实现方式 / 28
2.2.1 基于分离内核的Hypervisor
实现 / 29
2.2.2 基于RTOS扩展的Hypervisor
实现 / 29
2.2.3 模块化开放软件解决方案 / 30
2.3 PRTOS Hypervisor / 31
2.3.1 PRTOS Hypervisor的架构 / 31
2.3.2 PRTOS对处理器的功能需求 / 34
2.3.3 PRTOS Hypervisor的多核支持 / 34
2.3.4 PRTOS的安全性和可预测性 / 35
2.3.5 PRTOS系统的状态转换流程 / 36
2.4 本章小结 / 40
第3章 嵌入式Hypervisor组件设计 / 41
3.1 硬件依赖层 / 41
3.1.1 硬件资源虚拟化 / 41
3.1.2 处理器驱动 / 43
3.1.3 时钟驱动 / 46
3.1.4 定时器驱动 / 48
3.1.5 中断控制器驱动 / 50
3.1.6 页式内存管理驱动 / 54
3.1.7 控制台驱动 / 57
3.1.8 分区上下文切换 / 58
3.2 虚拟化服务层 / 59
3.2.1 虚拟中断服务 / 59
3.2.2 虚拟时钟和虚拟定时器服务 / 59
3.2.3 虚拟内存管理服务 / 60
3.2.4 虚拟设备管理服务 / 61
3.2.5 健康监控管理服务 / 61
3.2.6 虚拟处理器调度服务 / 62
3.2.7 分区管理服务 / 63
3.2.8 分区间通信服务 / 64
3.2.9 超级调用派发服务 / 65
3.2.10 跟踪管理服务 / 66
3.3 内部服务层 / 66
3.3.1 KLIBC / 66
3.3.2 分区引导程序 / 67
3.3.3 队列操作数据结构 / 67
3.4 超级调用接口函数库 / 69
3.5 本章小结 / 69
第4章 中断隔离技术的设计与实现 / 70
4.1 中断模型 / 70
4.2 内核中断设计 / 72
4.3 分区中断设计 / 74
4.3.1 分区中断处理流程 / 75
4.3.2 分区陷阱表的初始化 / 76
4.3.3 分区中断描述符表的初始化 / 77
4.4 虚拟时钟和虚拟定时器 / 78
4.4.1 虚拟时钟 / 78
4.4.2 虚拟定时器 / 81
4.5 BAIL / 84
4.5.1 BAIL概述 / 84
4.5.2 裸机应用示例 / 85
4.6 实验:虚拟时钟和虚拟
定时器示例 / 87
4.6.1 分区0的裸机应用 / 88
4.6.2 分区1的裸机应用 / 89
4.7 本章小结 / 91
第5章 内存隔离技术的设计与实现 / 92
5.1 PRTOS内核的工作模式 / 92
5.1.1 X86处理器的特权模式 / 93
5.1.2 PRTOS内核和分区的实现方式 / 93
5.1.3 PRTOS内核空间的初始化 / 93
5.2 处理器的内存管理模型 / 96
5.2.1 PRTOS的虚拟地址空间分配 / 97
5.2.2 PRTOS分区内存的虚拟化 / 98
5.2.3 PRTOS分区内存的虚拟化实现 / 99
5.3 PRTOS内存管理的虚拟化 / 102
5.4 实验:分区内存隔离示例 / 104
5.4.1 分区0的裸机应用 / 106
5.4.2 分区1的裸机应用 / 106
5.4.3 分区2的裸机应用 / 107
5.5 本章小结 / 109
第6章 循环表调度器的设计与实现 / 110
6.1 PRTOS调度器概述 / 110
6.1.1 单处理器调度策略 / 110
6.1.2 多处理器调度策略 / 113
6.2 循环表调度器的数据结构
与实现 / 115
6.2.1 内核线程数据结构 / 115
6.2.2 Per-CPU数据结构 / 120
6.2.3 调度器框架 / 121
6.2.4 循环表调度器的实现 / 123
6.2.5 内核线程上下文的切换 / 126
6.3 分区和虚拟处理器管理 / 128
6.4 实验:分区调度示例 / 129
6.4.1 单核多分区调度策略示例 / 130
6.4.2 多核多分区调度策略示例 / 133
6.5 本章小结 / 135
第7章 健康监控的设计与实现 / 136
7.1 健康监控的目的 / 136
7.2 健康监控的实现 / 137
7.2.1 健康监控事件 / 138
7.2.2 健康监控行为 / 139
7.2.3 健康监控配置 / 140
7.2.4 健康监控日志 / 143
7.3 分层健康监控的实现 / 144
7.3.1 Hy
前言
第1章 Hypervisor概述 / 1
1.1 虚拟化技术与实现 / 1
1.1.1 CPU虚拟化 / 2
1.1.2 I/O虚拟化 / 5
1.1.3 为什么需要虚拟化技术 / 6
1.1.4 虚拟化的实现 / 8
1.2 面向桌面和企业云的Hypervisor
类型和产品 / 13
1.3 嵌入式Hypervisor / 14
1.3.1 嵌入式Hypervisor概述 / 14
1.3.2 嵌入式Hypervisor的
设计理念 / 16
1.4 主流的嵌入式Hypervisor
产品 / 19
1.4.1 国外RTOS厂商的Hypervisor
产品 / 19
1.4.2 开源嵌入式Hypervisor产品 / 22
1.4.3 国内RTOS 厂商的Hypervisor
产品 / 24
1.5 本章小结 / 24
第2章 基于分离内核的嵌入式
Hypervisor / 25
2.1 分区和分离内核 / 25
2.2 嵌入式Hypervisor的实现方式 / 28
2.2.1 基于分离内核的Hypervisor
实现 / 29
2.2.2 基于RTOS扩展的Hypervisor
实现 / 29
2.2.3 模块化开放软件解决方案 / 30
2.3 PRTOS Hypervisor / 31
2.3.1 PRTOS Hypervisor的架构 / 31
2.3.2 PRTOS对处理器的功能需求 / 34
2.3.3 PRTOS Hypervisor的多核支持 / 34
2.3.4 PRTOS的安全性和可预测性 / 35
2.3.5 PRTOS系统的状态转换流程 / 36
2.4 本章小结 / 40
第3章 嵌入式Hypervisor组件设计 / 41
3.1 硬件依赖层 / 41
3.1.1 硬件资源虚拟化 / 41
3.1.2 处理器驱动 / 43
3.1.3 时钟驱动 / 46
3.1.4 定时器驱动 / 48
3.1.5 中断控制器驱动 / 50
3.1.6 页式内存管理驱动 / 54
3.1.7 控制台驱动 / 57
3.1.8 分区上下文切换 / 58
3.2 虚拟化服务层 / 59
3.2.1 虚拟中断服务 / 59
3.2.2 虚拟时钟和虚拟定时器服务 / 59
3.2.3 虚拟内存管理服务 / 60
3.2.4 虚拟设备管理服务 / 61
3.2.5 健康监控管理服务 / 61
3.2.6 虚拟处理器调度服务 / 62
3.2.7 分区管理服务 / 63
3.2.8 分区间通信服务 / 64
3.2.9 超级调用派发服务 / 65
3.2.10 跟踪管理服务 / 66
3.3 内部服务层 / 66
3.3.1 KLIBC / 66
3.3.2 分区引导程序 / 67
3.3.3 队列操作数据结构 / 67
3.4 超级调用接口函数库 / 69
3.5 本章小结 / 69
第4章 中断隔离技术的设计与实现 / 70
4.1 中断模型 / 70
4.2 内核中断设计 / 72
4.3 分区中断设计 / 74
4.3.1 分区中断处理流程 / 75
4.3.2 分区陷阱表的初始化 / 76
4.3.3 分区中断描述符表的初始化 / 77
4.4 虚拟时钟和虚拟定时器 / 78
4.4.1 虚拟时钟 / 78
4.4.2 虚拟定时器 / 81
4.5 BAIL / 84
4.5.1 BAIL概述 / 84
4.5.2 裸机应用示例 / 85
4.6 实验:虚拟时钟和虚拟
定时器示例 / 87
4.6.1 分区0的裸机应用 / 88
4.6.2 分区1的裸机应用 / 89
4.7 本章小结 / 91
第5章 内存隔离技术的设计与实现 / 92
5.1 PRTOS内核的工作模式 / 92
5.1.1 X86处理器的特权模式 / 93
5.1.2 PRTOS内核和分区的实现方式 / 93
5.1.3 PRTOS内核空间的初始化 / 93
5.2 处理器的内存管理模型 / 96
5.2.1 PRTOS的虚拟地址空间分配 / 97
5.2.2 PRTOS分区内存的虚拟化 / 98
5.2.3 PRTOS分区内存的虚拟化实现 / 99
5.3 PRTOS内存管理的虚拟化 / 102
5.4 实验:分区内存隔离示例 / 104
5.4.1 分区0的裸机应用 / 106
5.4.2 分区1的裸机应用 / 106
5.4.3 分区2的裸机应用 / 107
5.5 本章小结 / 109
第6章 循环表调度器的设计与实现 / 110
6.1 PRTOS调度器概述 / 110
6.1.1 单处理器调度策略 / 110
6.1.2 多处理器调度策略 / 113
6.2 循环表调度器的数据结构
与实现 / 115
6.2.1 内核线程数据结构 / 115
6.2.2 Per-CPU数据结构 / 120
6.2.3 调度器框架 / 121
6.2.4 循环表调度器的实现 / 123
6.2.5 内核线程上下文的切换 / 126
6.3 分区和虚拟处理器管理 / 128
6.4 实验:分区调度示例 / 129
6.4.1 单核多分区调度策略示例 / 130
6.4.2 多核多分区调度策略示例 / 133
6.5 本章小结 / 135
第7章 健康监控的设计与实现 / 136
7.1 健康监控的目的 / 136
7.2 健康监控的实现 / 137
7.2.1 健康监控事件 / 138
7.2.2 健康监控行为 / 139
7.2.3 健康监控配置 / 140
7.2.4 健康监控日志 / 143
7.3 分层健康监控的实现 / 144
7.3.1 Hy
前 言
前 言
为什么要写这本书
嵌入式Hypervisor一直被认为是嵌入式系统软件的下一个前沿领域。随着复杂应用场景的日益增多,如何有效利用嵌入式系统的有限资源成为新的挑战,而嵌入式Hypervisor成为应对该挑战的关键。嵌入式系统的高性能、低功耗一直是航空、车载、轨道交通以及核电等领域的迫切需求,这也推动了单核处理器计算性能的提高和多核处理器的引入。与此同时,处理器芯片供应商对CPU(Central Processing Unit,中央处理器)虚拟化扩展的支持进一步推动了嵌入式系统中虚拟化技术的应用。而嵌入式Hypervisor提供了在同一单核/多核处理器上承载异构操作系统的灵活性,具有良好的可靠性和故障控制机制,可保证关键任务、硬实时应用程序和一般用途、不受信任的非关键应用程序之间的安全分离。因此,基于嵌入式Hypervisor的异构系统平台将是未来嵌入式系统软件的发展方向虽然嵌入式Hypervisor已经在诸多领域得到了广泛的应用,然而专门分析嵌入式Hypervisor的书籍非常匮乏。本书采用分离内核(Separation Kernel,SK)架构,结合原型系统PRTOS(Partition RTOS,分区RTOS)Hypervisor,详细剖析嵌入式Hypervisor的设计与实现技术,进而分析嵌入式Hypervisor对RTOS(Real Time Operating System,实时操作系统)、Linux的虚拟化支持,以便读者对基于嵌入式Hypervisor搭建的异构操作系统开放平台的生态优势有更为深刻的理解。
嵌入式Hypervisor并非可望而不可即,是可以落地实现并发挥重要经济价值的技术。希望本书能抛砖引玉,帮助读者更好地理解嵌入式Hypervisor的实现技术,并为国产嵌入式Hypervisor的发展贡献一份力量。
读者对象
高可靠操作系统的研发人员
嵌入式系统和应用的开发人员
嵌入式系统爱好者及科研院所的研究人员
如何阅读本书
本书共15章,从逻辑上分为三部分。
第一部分(第1~2章)介绍Hypervisor基础。
第1章介绍虚拟化技术的基本知识,包括虚拟化技术与实现、面向桌面和企业云的Hypervisor类型和产品、嵌入式Hypervisor基础知识以及主流的产品。
第2章详细对比两种嵌入式Hypervisor(基于分离内核的Hypervisor和基于RTOS扩展的Hypervisor)的实现方式,并引出本书将要介绍的PRTOS Hypervisor。
第二部分(第3~12章)介绍嵌入式Hypervisor的设计与实现。
第3章详细介绍PRTOS的架构,使读者了解PRTOS 架构和各个核心组件的功能。
第4章介绍PRTOS中断模型、中断虚拟化实现和BAIL(Bare-metal Application Interface Library,裸机应用接口库),使读者理解为何中断模型可以实现不同虚拟机之间的中断隔离以及BAIL为何可以对PRTOS的各个组件进行功能性验证。
第5章介绍PRTOS内存隔离技术。学习完本章,读者将会理解该技术如何使得同一物理机上运行的多个虚拟机具有独立的内存空间,以确保虚拟机之间的空间隔离性。
第6章介绍PRTOS的调度器设计。学习完本章,读者将会理解PRTOS如何支持单核/多核处理器硬件平台以及PRTOS如何对单vCPU(virtual CPU,虚拟CPU)分区和多vCPU分区实现统一调度,以确保虚拟机之间的时间隔离性。
第7章介绍健康监控的实现机制。学习完本章,读者将会理解健康监控如何用于监视硬件、分区级应用和PRTOS内核的状态以及健康监控如何在故障发生的时候尽量地解决故障或者隔离故障,以阻止故障进一步危害整个Hypervisor系统。
第8章介绍PRTOS 中实现的分区间通信技术。学习完本章,读者将会理解PRTOS中实现的两类分区间通信技术和共享内存通信。
第9章介绍PRTOS内核资源管理模型。学习完本章,读者将会理解PRTOS如何通过一组基于对象的统一接口对内核中的资源进行管理。
第10章阐述PRTOS内核和分区的初始化过程,包括PRTOS内核的初始化如何做到支持单核/多核处理器硬件平台,分区的初始化如何做到支持单vCPU分区和多vCPU分区。
第11章介绍PRTOS 提供的超级调用服务以及PRTOS内核的设计原则。学习完本章,读者将会理解PRTOS如何综合考虑安全性、实时性、可靠性和灵活性等因素,以便设计出高效可靠的嵌入式Hypervisor。
第12章介绍用于支持开发、部署和管理PRTOS系统的平台辅助工具。学习完本章,读者将会了解维护这些工具为何会简化PRTOS 内核源码的复杂度,使得 PRTOS内核保持在一个相对较小的规模,为 PRTOS 内核组件的完整性检验提供条件,并增强系统的安全性。
第三部分(第13~15章)介绍嵌入式Hypervisor的高级应用和未来规划。
第13章详细阐述μC/OS-Ⅱ的虚拟化过程。学习完本章,读者将会了解μC/OS-Ⅱ的虚拟化过程,并验证PRTOS对客户实时系统的支持能力。
第14章介绍Linux内核的虚拟化过程。学习完本章,读者将会了解Linux内核的虚拟化过程,理解适配Linux的好处:一方面可以扩展PRTOS的应用领域;另一方面可以验证PRTOS对开源GPOS(General Purpose Operating System,通用操作系统)的支持能力。
第15章阐述PRTOS Hypervisor的平台支持情况、未来其他平台的支持计划,并介绍PRTOS源码的开发模式以及PRTOS Hyp
为什么要写这本书
嵌入式Hypervisor一直被认为是嵌入式系统软件的下一个前沿领域。随着复杂应用场景的日益增多,如何有效利用嵌入式系统的有限资源成为新的挑战,而嵌入式Hypervisor成为应对该挑战的关键。嵌入式系统的高性能、低功耗一直是航空、车载、轨道交通以及核电等领域的迫切需求,这也推动了单核处理器计算性能的提高和多核处理器的引入。与此同时,处理器芯片供应商对CPU(Central Processing Unit,中央处理器)虚拟化扩展的支持进一步推动了嵌入式系统中虚拟化技术的应用。而嵌入式Hypervisor提供了在同一单核/多核处理器上承载异构操作系统的灵活性,具有良好的可靠性和故障控制机制,可保证关键任务、硬实时应用程序和一般用途、不受信任的非关键应用程序之间的安全分离。因此,基于嵌入式Hypervisor的异构系统平台将是未来嵌入式系统软件的发展方向虽然嵌入式Hypervisor已经在诸多领域得到了广泛的应用,然而专门分析嵌入式Hypervisor的书籍非常匮乏。本书采用分离内核(Separation Kernel,SK)架构,结合原型系统PRTOS(Partition RTOS,分区RTOS)Hypervisor,详细剖析嵌入式Hypervisor的设计与实现技术,进而分析嵌入式Hypervisor对RTOS(Real Time Operating System,实时操作系统)、Linux的虚拟化支持,以便读者对基于嵌入式Hypervisor搭建的异构操作系统开放平台的生态优势有更为深刻的理解。
嵌入式Hypervisor并非可望而不可即,是可以落地实现并发挥重要经济价值的技术。希望本书能抛砖引玉,帮助读者更好地理解嵌入式Hypervisor的实现技术,并为国产嵌入式Hypervisor的发展贡献一份力量。
读者对象
高可靠操作系统的研发人员
嵌入式系统和应用的开发人员
嵌入式系统爱好者及科研院所的研究人员
如何阅读本书
本书共15章,从逻辑上分为三部分。
第一部分(第1~2章)介绍Hypervisor基础。
第1章介绍虚拟化技术的基本知识,包括虚拟化技术与实现、面向桌面和企业云的Hypervisor类型和产品、嵌入式Hypervisor基础知识以及主流的产品。
第2章详细对比两种嵌入式Hypervisor(基于分离内核的Hypervisor和基于RTOS扩展的Hypervisor)的实现方式,并引出本书将要介绍的PRTOS Hypervisor。
第二部分(第3~12章)介绍嵌入式Hypervisor的设计与实现。
第3章详细介绍PRTOS的架构,使读者了解PRTOS 架构和各个核心组件的功能。
第4章介绍PRTOS中断模型、中断虚拟化实现和BAIL(Bare-metal Application Interface Library,裸机应用接口库),使读者理解为何中断模型可以实现不同虚拟机之间的中断隔离以及BAIL为何可以对PRTOS的各个组件进行功能性验证。
第5章介绍PRTOS内存隔离技术。学习完本章,读者将会理解该技术如何使得同一物理机上运行的多个虚拟机具有独立的内存空间,以确保虚拟机之间的空间隔离性。
第6章介绍PRTOS的调度器设计。学习完本章,读者将会理解PRTOS如何支持单核/多核处理器硬件平台以及PRTOS如何对单vCPU(virtual CPU,虚拟CPU)分区和多vCPU分区实现统一调度,以确保虚拟机之间的时间隔离性。
第7章介绍健康监控的实现机制。学习完本章,读者将会理解健康监控如何用于监视硬件、分区级应用和PRTOS内核的状态以及健康监控如何在故障发生的时候尽量地解决故障或者隔离故障,以阻止故障进一步危害整个Hypervisor系统。
第8章介绍PRTOS 中实现的分区间通信技术。学习完本章,读者将会理解PRTOS中实现的两类分区间通信技术和共享内存通信。
第9章介绍PRTOS内核资源管理模型。学习完本章,读者将会理解PRTOS如何通过一组基于对象的统一接口对内核中的资源进行管理。
第10章阐述PRTOS内核和分区的初始化过程,包括PRTOS内核的初始化如何做到支持单核/多核处理器硬件平台,分区的初始化如何做到支持单vCPU分区和多vCPU分区。
第11章介绍PRTOS 提供的超级调用服务以及PRTOS内核的设计原则。学习完本章,读者将会理解PRTOS如何综合考虑安全性、实时性、可靠性和灵活性等因素,以便设计出高效可靠的嵌入式Hypervisor。
第12章介绍用于支持开发、部署和管理PRTOS系统的平台辅助工具。学习完本章,读者将会了解维护这些工具为何会简化PRTOS 内核源码的复杂度,使得 PRTOS内核保持在一个相对较小的规模,为 PRTOS 内核组件的完整性检验提供条件,并增强系统的安全性。
第三部分(第13~15章)介绍嵌入式Hypervisor的高级应用和未来规划。
第13章详细阐述μC/OS-Ⅱ的虚拟化过程。学习完本章,读者将会了解μC/OS-Ⅱ的虚拟化过程,并验证PRTOS对客户实时系统的支持能力。
第14章介绍Linux内核的虚拟化过程。学习完本章,读者将会了解Linux内核的虚拟化过程,理解适配Linux的好处:一方面可以扩展PRTOS的应用领域;另一方面可以验证PRTOS对开源GPOS(General Purpose Operating System,通用操作系统)的支持能力。
第15章阐述PRTOS Hypervisor的平台支持情况、未来其他平台的支持计划,并介绍PRTOS源码的开发模式以及PRTOS Hyp
评论
还没有评论。