嵌入式Hypervisor 架构 原理与应用-孙陈伟-电子与嵌入式系统设计丛书 pdf下载
选择版本
内容简介
本篇主要提供嵌入式Hypervisor 架构 原理与应用-孙陈伟-电子与嵌入式系统设计丛书电子书的pdf版本下载,本电子书下载方式为百度网盘方式,点击以上按钮下单完成后即会通过邮件和网页的方式发货,有问题请联系邮箱ebook666@outlook.com















内容简介
本书由资深虚拟化专家撰写,辅以大量验证式案例,提供参考源码。本书从解读虚拟化技术、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 Hypervisor级健康监控
的实现 / 145
7.3.2 分区级健康监控的实现 / 146
7.4 实验:健康监控示例 / 148
7.4.1 示例描述 / 148
7.4.2 XML配置文件 / 149
7.4.3 分区0和分区1的裸机应用 / 150
7.4.4 分区2的裸机应用 / 151
7.5 本章小结 / 152
第8章 分区间通信技术 / 153
8.1 采样端口通信 / 153
8.1.1 采样端口的定义 / 154
8.1.2 采样端口的实现 / 155
8.2 排队端口通信 / 160
8.2.1 排队端口的定义 / 160
8.2.2 排队端口的实现 / 161
8.3 共享内存通信 / 164
8.4 实验:分区间通信示例 / 164
8.4.1 XML配置文件 / 165
8.4.2 分区的裸机应用 / 166
8.5 本章小结 / 170
第9章 内核资源管理模型设计 / 171
9.1 PRTOS内核的资源管理模型 / 171
9.1.1 虚拟控制台 / 171
9.1.2 对象管理框架 / 172
9.2 PRTOS功能组件注册 / 175
9.2.1 通信端口组件 / 175
9.2.2 控制台组件 / 177
9.2.3 健康监控组件 / 177
9.2.4 内存操作组件 / 177
9.2.5 状态查询组件 / 178
9.2.6 跟踪管理组件 / 178
9.3 控制台设备管理 / 179
9.3.1 UART输出设备 / 180
9.3.2 VGA输出设备 / 181
9.3.3 内存块输出设备 / 182
9.4 实验:内核设备驱动示例 / 182
9.4.1 跟踪管理示例 / 182
9.4.2 虚拟控制台设备管理示例 / 185
9.5 本章小结 / 188
第10章 系统初始化过程 / 189
10.1 Hypervisor内核的初始化过程 / 189
10.1.1 PRTOS启动序列 / 189
10.1.2 PRTOS初始化流程 / 192
10.2 PRTOS的初始化实现 / 193
10.2.1 start()函数的实现 / 193
10.2.2 start_prtos()函数的实现 / 195
10.2.3 setup_kernel()函数的实现 / 196
10.3 PRTOS分区的初始化过程 / 200
10.3.1 PBL的职责 / 200
10.3.2 分区引导器的实现 / 201
10.3.3 单vCPU分区的初始化 / 202
10.3.4 多vCPU分区的初始化 / 203
10.4 实验:双vCPU分区的初始化
过程 / 204
10.5 本章小结 / 205
第11章 内核服务的设计原则 / 206
11.1 超级调用服务 / 206
11.1.1 系统服务 / 206
11.1.2 分区服务 / 207
11.1.3 时钟和定时器服务 / 207
11.1.4 调度服务 / 208
11.1.5 分区间通信服务 / 208
11.1.6 健康监控服务 / 209
11.1.7 追踪服务 / 209
11.1.8 中断管理服务 / 209
11.1.9 X86处理器专用服务 / 210
11.1.10 分区控制表服务 / 210
11.2 PRTOS的设计原则 / 210
11.2.1 系统确定性设计原则 / 211
11.2.2 静态资源配置原则 / 211
11.2.3 机密性设计原则 / 212
11.2.4 高速缓存处理原则 / 212
11.2.5 PRTOS开发流程原则 / 213
11.3 本章小结 / 214
第12章 PRTOS的配套工具 / 215
12.1 配置文件解析工具 / 215
12.1.1 功能选项说明 / 215
12.1.2 XSD语义文件 / 217
12.2 PEF格式转换工具 / 219
12.3 容器构建工具 / 221
12.4 自引导映像构建工具 / 222
12.5 配置信息提取工具 / 223
12.6 完整性检查工具 / 224
12.7 预留资源提取工具 / 225
12.8 结构体成员域偏移量计算工具 / 226
12.9 本章小结 / 227
第13章 分区Guest RTOS的虚拟化
实现 / 228
13.1 μC/OS-Ⅱ概述 / 228
13.1.1 系统初始化模块 / 228
13.1.2 任务调度模块 / 228
13.1.3 互斥与同步机制模块 / 230
13.1.4 中断处理模块 / 231
13.2 μC/OS-Ⅱ的虚拟化过程 / 232
13.2.1 任务栈帧设计 / 232
13.2.2 初始任务上下文的恢复 / 233
13.2.3 任务上下文切换 / 234
13.2.4 中断上下文切换 / 235
13.2.5 μC/OS-Ⅱ分区入口函数的
实现 / 235
13.2.6 μC/OS-Ⅱ分区的启动过程 / 236
13.3 针对传统RTOS的分区
虚拟化总结 / 236
13.4 实验:分区μC/OS-Ⅱ示例 / 238
13.4.1 示例描述 / 238
13.4.2 在分区0和分区1上运行
μC/OS-Ⅱ系统 / 239
13.5 本章小结 / 240
第14章 分区Guest GPOS的虚拟化
实现 / 241
14.1 分区Linux内核的虚拟化 / 241
14.2 Linux虚拟化过程中的问题 / 242
14.2.1 分区Linux内核的I/O空间
和设备管理 / 242
14.2.2 分区Linux的虚拟中断管理 / 243
14.2.3 分区Linux内核映像地址
的重定位 / 244
14.2.4 分区Linux的启动过程 / 245
14.2.5 I/O空间访问管理 / 248
14.3 分区Linux内核的设备管理 / 248
14.3.1 分区Linux的设备分配 / 248
14.3.2 分区Linux的设备虚拟化 / 249
14.4 Linux分区的映像格式 / 251
14.5 Guest Linux SDK概述 / 255
14.5.1 生成Linux SDK / 256
14.5.2 Linux SDK的安装过程 / 256
14.5.3 Linux SDK组件 / 257
14.5.4 虚拟化Linux的构建过程 / 258
14.6 本章小结 / 261
第15章 PRTOS Hypervisor开源
社区环境 / 262
15.1 PRTOS Hypervisor的
硬件支持 / 262
15.1.1 X86指令集 / 262
15.1.2 ARMv8指令集 / 263
15.1.3 RISC-V指令集 / 265
15.2 PRTOS的开发模式 / 266
15.3 PRTOS Hypervisor的愿景 / 266
15.4 本章小结 / 267