孤独雪鹰 发表于 2015-4-15 09:36:21

VirtualBox的源码学习

VMM重要的组件


[*]TRPM (Trap Manager)
[*]PGM (Page Manager)
[*]REM (Recompiled Execution Manager)
[*]EM (Execution Manager)
[*]HWACCM (Hardware Acceleration Manager)
[*]SSM (Saved State Manager)
接口
  Main是VMM对外的接口,所以Client进程都通过调用Main提供的API来请求VMM内部各个组件的服务,而不是直接调用各个组件。
  
软件虚拟化
  VirtualBox让Guest中的Ring 3的应用程序像普通应用程序一样运行在Ring 3层,而让Guest OS运行在Ring 1层,Ring 1层不能执行特权指令,因此遇到特权指令会trap到Ring 0层的VMM里。
  
  但是这种工作模式有很多限制,为了解决这些限制,VirtualBox通过CSAM(Code Scanning and Analyzing Manager)反汇编Guest的代码,并且通过PATM(Patch Manager)把问题指令通过in-situ(原地替换)的方式进行替换,以便进行有效的处理。
页: [1]
查看完整版本: VirtualBox的源码学习