首页 > 代码库 > 在Windows系统上实现轻量级的线程间及进程间消息队列

在Windows系统上实现轻量级的线程间及进程间消息队列

看IaaS 资料时,捎带研究下硬件虚拟化,主要参考《基于intel VT-x 的Xen 全虚拟化实现》,《intel 开发手册 第三卷 19/20章》

Intel VT 是intel X86架构的CPU硬件虚拟化技术,新增两种模式:

  • VM root: 即虚拟机管理系统运行模式;
  • VM non root:即虚拟机运行模式;

如下图:

VMXON、VMXOFF用以实现打开或关闭虚拟化功能;

VM Exit和VM Entry 用以实现non root和root之间的切换;这种转换被VMCS(VM Control Structure)这个数据结构控制,对每一个虚拟CPU都会对应一个VMCS。

VMCS包含六个域,分别是:

  •  Guest-State Area: 处理器状态在VM Exit时被保存,在进入VM Entry时被加载,即退出non root时保存客户机状态;
  •  Host State Area: 处理器状态在VM Exit被加载;
  • VM Excution Control Field,定义vm在non root下的执行行为,哪些指令会切换到root;
  • VM Entry 控制域
  • VM Exit  控制域
  • VM Exit  信息域,记录上一次VM Exit信息

举例Xen:

当需要执行一些特权指令时(如I/O控制访问),切入root模式,Xen取得控制权,通过VMCX中的信息得知VM Exit的原因,调用vmx_vmexit_handler执行;