万本电子书0元读

万本电子书0元读

顶部广告

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

(1)百度2位资深技术专家历时5年两易其稿,系统总结多年操作系统和虚拟化经验 (2)从CPU、内存、中断、外设、网络5个维度深讲解Linux系统虚拟化的技术原理和实现  读者对象:1.云计算研发工程师; 2.Linux操作系统研发工程师; 3.对虚拟化、云计算感兴趣的爱好者。  云计算的研究和应用已经持续了多年,还在不断向更多领域扩展。在可预见的未来,几乎所有的应用都会部署到云端,为我们提供各种各样的服务,而虚拟化技术是云计算的基石。如果将云平台看作是管理机器的,那么系统虚拟化就是制造机器的,我们肯定不想仅仅停留在管理机器层面,我们需要优化虚拟机,甚至是“制造”虚拟机。

售       价:¥

纸质售价:¥44.50购买纸书

144人正在读 | 1人评论 6.2

作       者:王柏生,谢广军

出  版  社:机械工业出版社

出版时间:2020-09-01

字       数:28.8万

所属分类: 科技 > 计算机/网络 > 程序设计

温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印

为你推荐

  • 读书简介
  • 目录
  • 累计评论(1条)
  • 读书简介
  • 目录
  • 累计评论(1条)
   这是一部深度讲解如何在Linux操作系统环境下用软件虚拟出一台“物理”计算机的著作。     两位作者都是百度的资深技术专家,一位是百度的主任架构师,一位是百度智能云的副总经理,都在操作系统和虚拟化等领域有多年的实践经验。     本书从计算机体系结构、操作系统、硬件等多个方面深度探索了如何从CPU、内存、中断、外设、网络5个维度去虚拟化Linux系统,不仅剖析了其中的关键技术原理,而且深阐述了具体的实现。 全书共6章: 第1章:CPU虚拟化 介绍了X86架构下的VMX扩展,讨论了在VMX下虚拟CPU的完整生命周期,着重阐述了Host和Guest的切换、指令的模拟以及KVM是如何虚拟多处理器的。 第2章:内存虚拟化 讨论了操作系统如何为虚拟机呈现物理内存,结合影子页表以及EPT探讨了KVM如何完成从GVA到HPA的2层地址映射。 第3章:中断虚拟化 首先,讨论了从单核系统的8259A始,到多核系统的APIC,再到绕I/O APIC直从设备向LAPIC发送基于消息的MSI的虚拟化原理和实现。然后,讨论了Intel为了提高效率,是如何从硬件层面对虚拟化中断行支持的,以及KVM是如何使用它们的。 第4~5章 外设虚拟化 从完全虚拟化始,依次讲解了半虚拟化(Virtio)和Intel的VT-d支持下的硬件辅助虚拟化。通过实现一个模拟串口带领读者直观体会了设备虚拟化的基本原理,然后深阐述了Virito标准和实现,以及支持SR-IOV的DMA重映射和中断重映射。   第6章 网络虚拟化 讨论了在通用硬件网络的基础上,操作系统如何虚拟出专用的网络设备,为租户组建虚拟网络。<br/>【推荐语】<br/>关于代码版本信息和下载地址: (1)每一段代码前面都有 commit id 或者版本号。自己写的部分,不多,没有公维护,另外一个目的是希望读者能自己“敲”一下,会更深刻。 (2)Linux内核从github下载,也下载些早期版本的代码,网上可以找到。 (3)kvmtool的内核网站下载地址: https://git.kernel.org/pub/scm/linux/kernel/git/will/kvmtool.git   适读人群 :1.云计算研发工程师;2.Linux操作系统研发工程师;3.对虚拟化、云计算感兴趣的爱好者。 (1)两位作者分别是百度的主任架构师和百度智能云副总裁,在操作系统和虚拟化领域有近20年的研究和实践经验。 (2)虚拟化是云计算的基石,两位作者在云计算领域也有非常深的研究和非常深厚的积累。 (3)两位作者历史5年,两易其稿,高标准、严要求完成的心血之作,初心是为行业的后来者留下一分传承。 (4)内容扎实,从CPU、内存、中断、外设、网络5个维度深讲解Linux系统虚拟化的技术原理和实现   云计算的研究和应用已经持续了多年,还在不断向更多领域扩展。在可预见的未来,几乎所有的应用都会部署到云端,为我们提供各种各样的服务,而虚拟化技术是云计算的基石。如果将云平台看作是管理机器的,那么系统虚拟化就是制造机器的,我们肯定不想仅仅停留在管理机器层面,我们需要优化虚拟机,甚至是“制造”虚拟机。 本书带领读者从计算机体系结构、操作系统、硬件等多个维度深度探讨在Linux操作系统环境下,软件是如何虚拟出“物理”计算机的,以及为了提高虚拟效率、减少损耗,硬件从体系结构上是如何支持虚拟化的以及系统软件是如何使用硬件虚拟化的。涵盖CPU、内存、中断、外设、网络等多个系统的虚拟化,深阐述了其中的技术原理和实现。<br/>【作者】<br/>王柏生  资深技术专家,先后就职于中科院软件所、红旗Linux和百度,现任百度主任架构师。在操作系统、虚拟化技术、分布式系统、云计算、自动驾驶等相关领域耕耘多年,有着丰富的实践经验。  著有畅销书《深度探索Linux操作系统》(2013年出版)。 谢广军  计算机专业博士,毕业于南大学计算机系。  资深技术专家,有多年的IT行业工作经验。现担任百度智能云副总经理,负责云计算相关产品的研发。多年来一直从事操作系统、虚拟化技术、分布式系统、大数据、云计算等相关领域的研发工作,实践经验丰富。 <br/>
目录展开

前言

第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网桥中的处理

累计评论(1条) 1个书友正在讨论这本书 发表评论

发表评论

发表评论,分享你的想法吧!

买过这本书的人还买过

读了这本书的人还在读

回顶部