当我们创建和使用虚拟机时,通常都伴随着虚拟机的联网问题。下面就帮大家梳理下QEMU虚拟机中几种网络的模拟和用法。
利用虚拟机(QEMU)实现宿主机快速重启
利用虚拟机(QEMU)学习X86指令集1--内存存储的重排序以及FENCE指令
利用虚拟机(QEMU)学习X86指令集0
C/C++ 中嵌入汇编总结
SMD Chapter 8.2 内存存取顺序
‘内存存取顺序(Memory ordering)’一词说的是处理器通过系统总线进行读取(加载)以及写回(存储)到系统内存里面。Intel 64以及32位系统根据架构的实现,支持多种存储顺序模型。例如,intel 386处理器强制使用“程序顺序”(强顺序),就是说读写系统总线的顺序按照全部环境中CPU指令流产生的顺序。
后来为了指令执行的效率,IA32架构允许脱离“强顺序”,在奔腾4、Xeon以及P6系列处理器中,称作“处理器顺序”。处理器顺序不同的方式,称作“内存存取顺序模型”,他们都允许增强执行,例如 允许读操作在可以缓存的写操作之前。所有这些不同模型的目的就是增强指令执行速度,同时保持存储内容的一致性,即使在多核系统中亦然。
8.2.1和8.2.2章节描述在intel486、奔腾、Core2 Due、Atom、Core Due、奔腾4、Xeon以及P6系列处理器中内存存取模型的实现。8.2.3章节会给出具体的存储模型的例子。8.2.4章节是关于字节操作的特殊处理。8.2.5章节讨论一些特殊指令的使用会影响存储模型的行为。
8.2.1 奔腾以及486处理器上的存储模型
EFI Shell中使用tfpt.efi 自动化Kernel测试方案
KVM(Kernel-based Virtual Machine)源码分析
(编者按:写完才发现,这篇分析写的又臭又长…… 原谅语言凝练不足和code阅读还没有炉火纯青,我会慢慢提炼,有兴趣的同学可以评论区吐槽:)
在看code之前,先把KVM-QEMU的source code的大框架拎出来,给读者直观一点的感受,本文最后还有一个稍微详细的call graph。中间这些文字是帮助读者以及我自己阅读和理解code的,大多数是kernel source code,因为Qemu相关的在之前的日志中已经涉及到了。