0%

当我们创建和使用虚拟机时,通常都伴随着虚拟机的联网问题。下面就帮大家梳理下QEMU虚拟机中几种网络的模拟和用法。

概述

Read more »

为什么这么做?

  1. 系统完成一次重启的时间太久。
  2. 越来越频繁的安全相关的紧急的升级,包括Firmware/microcode/OS/VMM/QEMU。
  3. 运行中断给“云”服务提供商带来不好的用户体验。
Read more »

浅谈“内存读写重排序”

在我们编写C/C++代码时,以及它在CPU上运行时,按照一些规则,代码中原有的内存读写指令的执行顺序(又叫“程序顺序”, program ordering)会被重新排列。这个现象会在两个地方引入,编译时候由编译器引入;以及运行时由处理器引入。目的都是为了”使代码运行的更快”。尽管本文重在说明运行时CPU对内存读写的重排序作用。但考虑完整性以及防止读者混淆,我们会两种重排序一起介绍。

Read more »

引言

接下来的几个日志,我会写几篇关于如何学习X86指令集,也是帮助自己梳理和记忆知识点。
下面是我大概总结了一下,一个操作系统需要掌握的知识点,仅供参考欢迎斧正!

Read more »

‘内存存取顺序(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处理器上的存储模型

Read more »

引言

对于Linux Kernel 或者OS相关的自动化测试,如何自动更新被测的Kernel以及OS image有时候是比较困难的事情。
Linux社区的”老神仙”Fengguang同学牵头开发了0-day自动化测试系统,系统期初的核心功能是利用kexec加载待测的kernel image二次启动。大概流程是:

Read more »

(编者按:写完才发现,这篇分析写的又臭又长…… 原谅语言凝练不足和code阅读还没有炉火纯青,我会慢慢提炼,有兴趣的同学可以评论区吐槽:)

在看code之前,先把KVM-QEMU的source code的大框架拎出来,给读者直观一点的感受,本文最后还有一个稍微详细的call graph。中间这些文字是帮助读者以及我自己阅读和理解code的,大多数是kernel source code,因为Qemu相关的在之前的日志中已经涉及到了。

Read more »

23.1 概述

本章介绍虚拟机体系结构的基础知识和虚拟机扩展的概述(VMX),支持多个软件环境的处理器硬件虚拟化。
关于VMX指令的信息参考英特尔®64和IA-32架构软件开发人员手册中的第2B卷。其他关于VMX和系统编程参考SDM 第3B卷

Read more »

什么是QOM

QOM(Qemu Object Model)是QEMU最新的设备模型,将所有的模拟设备整合成了一种单根结点(系统总线)的树状形式,并具有热插拔功能。后来可能由于Device和Bus之间的复杂关系,又开发了QOM。
QOM是QEMU在C的基础上自己实现的一套面向对象机制,负责将device、bus等设备都抽象成为对象。

Read more »