深度探索Linux系统虚拟化:原理与实现

深度探索Linux系统虚拟化:原理与实现

查阅电子书
手机扫码
  • 微信扫一扫

    关注微信公众号

因版权原因待上架

编辑推荐

百度主任架构师和百度云副总裁5年两易其稿,从CPU、内存、中断、外设、网络5维度深入讲解Linux系统虚拟化。

内容简介

这是一部深度讲解如何在Linux操作系统环境下用软件虚拟出一台“物理”计算机的著作。

两位作者都是百度的资深技术专家,一位是百度的主任架构师,一位是百度智能云的副总经理,都在操作系统和虚拟化等领域有多年的实践经验。

本书从计算机体系结构、操作系统、硬件等多个方面深度探索了如何从CPU、内存、中断、外设、网络5个维度去虚拟化Linux系统,不仅剖析了其中的关键技术原理,而且深入阐述了具体的实现。

作者简介

作者王伯生,资深技术专家,先后就职于中科院软件所、红旗Linux和百度,现任百度主任架构师。在操作系统、虚拟化技术、分布式系统、云计算、自动驾驶等相关领域耕耘多年,有着丰富的实践经验。著有畅销书《深度探索Linux操作系统》(2013年出版)。

章节目录

版权信息

前言

第1章 CPU虚拟化

1.1 x86架构CPU虚拟化

1.1.1 陷入和模拟模型

1.1.2 x86架构虚拟化的障碍

1.1.3 VMX

1.1.4 VCPU生命周期

1.2 虚拟机切入和退出

1.2.1 GCC内联汇编

1.2.2 虚拟机切入和退出及相关的上下文保存

1.3 陷入和模拟

1.3.1 访问外设

1.3.2 特殊指令

1.3.3 访问具有副作用的寄存器

1.4 对称多处理器虚拟化

1.4.1 MP Table

1.4.2 处理器启动过程

1.5 一个简单KVM用户空间实例

1.5.1 创建虚拟机实例

1.5.2 创建内存

1.5.3 创建处理器

1.5.4 Guest

1.5.5 加载Guest镜像到内存

1.5.6 运行虚拟机

第2章 内存虚拟化

2.1 内存寻址

2.1.1 段式寻址

2.1.2 平坦内存模型

2.1.3 页式寻址

2.1.4 页式寻址实例

2.2 VMM为Guest准备物理内存

2.2.1 内核是如何获取内存的

2.2.2 建立内存段信息

2.2.3 准备中断0x15的处理函数以及设置IVT

2.2.4 中断0x15的处理函数实现

2.2.5 虚拟内存条

2.3 实模式Guest的寻址

2.3.1 设置CPU运行于Virtual-8086模式

2.3.2 设置Guest模式下的cr3寄存器

2.3.3 虚拟MMU的上下文

2.3.4 缺页异常处理

2.4 保护模式Guest的寻址

2.4.1 偷梁换柱cr3

2.4.2 影子页表缺页异常处理

2.5 EPT

2.5.1 设置EPT页表

2.5.2 EPT异常处理

2.5.3 EPT支持下的地址翻译过程

第3章 中断虚拟化

3.1 虚拟中断

3.2 PIC虚拟化

3.2.1 可编程中断控制器8259A

3.2.2 虚拟设备向PIC发送中断请求

3.2.3 记录中断到IRR

3.2.4 设置待处理中断标识

3.2.5 中断评估

3.2.6 中断ACK

3.2.7 关于EOI的处理

3.2.8 中断注入

3.3 APIC虚拟化

3.3.1 外设中断过程

3.3.2 核间中断过程

3.3.3 IRQ routing

3.4 MSI(X)虚拟化

3.4.1 MSI(X)Capability数据结构

3.4.2 建立IRQ routing表项

3.4.3 MSI设备中断过程

3.5 硬件虚拟化支持

3.5.1 虚拟中断寄存器页面(virtual-APIC page)

3.5.2 Guest模式下的中断评估逻辑

3.5.3 posted-interrupt processing

第4章 设备虚拟化

4.1 设备虚拟化模型演进

4.2 PCI配置空间及其模拟

4.3 设备透传

4.3.1 虚拟配置空间

4.3.2 DMA重映射

4.3.3 中断重映射

4.4 完全虚拟化

4.4.1 Guest发送数据

4.4.2 Guest接收数据

第5章 Virtio虚拟化

5.1 I/O栈

5.1.1 文件系统

5.1.2 通用块层

5.1.3 块设备驱动

5.1.4 page cache

5.1.5 bio

5.1.6 I/O调度器

5.2 Virtio协议

5.2.1 描述符表

5.2.2 可用描述符区域

5.2.3 已用描述符区域

5.2.4 Virtio设备的PCI配置空间

5.3 初始化Virtqueue

5.4 驱动根据I/O请求组织描述符链

5.5 驱动通知设备处理请求

5.6 设备处理I/O请求

5.7 驱动侧回收I/O请求

5.8 设备异步处理I/O

5.9 轻量虚拟机退出

5.9.1 创建eventfd

5.9.2 kvmtool监听eventfd

5.9.3 VM exit处理函数唤醒I/O任务

第6章 网络虚拟化

6.1 基于Overlay的虚拟网络方案

6.1.1 计算节点

6.1.2 网络节点

6.1.3 Open vSwitch

6.2 虚拟机访问外部主机

6.2.1 数据包在计算节点Linux网桥中的处理

6.2.2 数据包在计算节点的Open vSwitch中的处理

6.2.3 数据包在网络节点的Open vSwitch中的处理

6.3 外部主机访问虚拟机

6.3.1 数据包在网关中的处理过程

6.3.2 数据包在网络节点的Open vSwitch中的处理

6.3.3 数据包在计算节点的Open vSwitch中的处理

6.3.4 数据包在Linux网桥中的处理

深度探索Linux系统虚拟化:原理与实现是2020年由机械工业出版社华章分社出版,作者王伯生。

得书感谢您对《深度探索Linux系统虚拟化:原理与实现》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。

购买这本书

你可能喜欢
VMwarevSphere6.0虚拟化架构实战指南 电子书
本书语言通俗易懂,可操作性强,适用于VMware vSphere 6.0虚拟化架构管理人员,并可作为VCP 6考试的参考资料。
Ubuntu Linux操作系统(第2版)(微课版) 电子书
本书主要讲解Linux桌面操作系统Ubuntu的配置管理、桌面应用、编程和软件开发。全书共12章,内容包括Ubuntu概述、安装与基本操作,用户与组管理,文件与目录管理,磁盘存储管理,软件包管理,系统高级管理,Ubuntu桌面应用,Shell编程,C/C++编程,Java与Android开发环境,PHP、Python和Node.js开发环境,Ubuntu服务器。
系统工程:原理与实务(微课版 第2版) 电子书
本书共7章,系统地讲解了系统工程研究领域的基本知识,包括系统与系统工程概述、系统工程方法论、系统结构模型、分析模型、系统仿真、系统评价和系统工程应用综合案例等内容。
Linux内核深度解析:基于ARM64架构的Linux4.x内核 电子书
基于ARM64架构的Linux 4.x内核,大量图例描述数据结构之间的关系和函数的执行流程 结合代码分析,以通俗化语言全面剖析Linux内核。
Linux系统管理初学者指南:基于CentOS7.6 电子书
基于CentOS 7.6解读Linux系统管理,Linux命令行大全,Linux系统管理就该这么学。