KVM内核源码学习之源码组成
来源:互联网 发布:des算法主要内容 编辑:程序博客网 时间:2024/05/16 14:26
1 KVM内核源码的组成
在linux-2.6.32版本的内核中,涉及到KVM的部分大概有两个部分:virt目录和Arch目录。其中Arch目录包含了对应多种处理器架构的代码模块,比如x86/powerpc/mips等等,多款处理器支持KVM,如x86和powerpc。我们主要关心x86架构下的KVM的实现方案。Arch目录 下,实现了包括时钟源的模拟、LAPIC的实现 及与底层硬件直接相关的MMU的实现。而Virt目录 下则主要是与硬件体系结构不直接相关的部分,包括虚拟IO地址的映射管理、虚拟机内存映射管理及虚拟机中断注入相关的处理等
2 核源码架构
主要功能
代码目录
说明
VM 、VCPU、虚拟内存及虚拟IO设备等的创建、初始化与管理调用
Virt/Kvm_main
与PC模拟器 qemu交互,完成虚拟机、虚拟CPU、虚拟IO设备与虚拟内存等的管理工作,控制VM在用户态和内核态间的转换控制
coalesced_mmio
Virt/ coalesced_mmio
仿真设备的MMIO内存,将MMIO读写操作积累在环形缓冲区来实现性能优化
VM中断请求的接收与处理的基本操作
Virt/Irq_common
提供对 pic\msi\ioapic等等中断方式的虚拟化支持与响应
文件系统模拟IO操作涉及的数据结构
Virt/Eventfd
文件系统模拟IO操作涉及的数据结构
虚拟机直接使用物理设备问题
Virt/iommu
在物理上,IOMMU 就是一个针对于外围设备的内存管理单元,相似于 CPU 上的 MMU, 提供地址翻译、隔离和访问控制的功能
平台设备Ioapic 的仿真
一般平台型设备,如 PIT, PIC, APIC 等是直接在 KVM 内核中实现后端的代码的, 而 PCI 总线上的设备或更外围的方式连接的设备,通过 qemu-kvm 在用户空间来仿真的。MMIO 和 PIO, KVM 实现了一个抽象的 IO_BUS 模型
时钟源的模拟
Arch/x86/kvm/I8254
模拟8254时钟源
中断控制器的模拟
Arch/x86/kvm/I8259
Lapic Irq
I8259中断控制器的模拟 LAPIC的模拟及中断在底层的注入与处理
定时时器的模拟
Arch/x86/kvm/ Timer
定时时器的模拟
内存管理
Arch/x86/kvm/mmu
内存管理
- KVM内核源码学习之源码组成
- Linux内核源码学习之 内核编译
- Linux内核源码学习之 基本知识
- Linux内核源码学习之僵尸进程
- Linux内核源码学习之 数据结构
- linux内核源码学习
- Linux内核源码学习
- Linux内核源码学习之 内核页表打印
- ernel 3.10内核源码分析--KVM相关--虚拟机运行
- centos7下用内核源码单独编译安装KVM模块
- kvm 源码安装
- Qemu-kvm源码获取
- Linux内核源码学习之进程切换细节整理
- Linux内核源码学习之fork的缓冲区
- Linux内核源码学习之 slab 分配器剖析
- 内核源码学习:伙伴算法
- 内核源码学习:伙伴算法
- 内核源码学习:伙伴算法
- 简洁明了,C++中动态定义一维数组,二维数组,三维数组
- USACO1.1.3 Friday the Thirteenth 13日星期五
- 女孩都应该记住的几句英文
- Cocos2dx 定时器
- CODE 107: Reverse Nodes in k-Group
- KVM内核源码学习之源码组成
- ExpandableListView 默认展开
- 黑马程序员-----线程小结
- Xp系统优化 之前言 (1)
- USACO1.1.4 Broken Necklace 破碎的项链
- mybatis 自定义缓存 cache
- 送一首诗给心急的、望子成龙的父母们——《牵一只蜗牛去散步》
- 动态分配内存
- struts1.2简单实例