e6998–虚拟机课程2cpu虚拟化内容摘要:

非特权态 特权态 “严格的可虚拟化” 处理器能够虚拟化的前提是:当运行一个不是很特权的模式时 : • 所有访问特权状态的指令都陷入 • 所有指令要么陷入,要么和原来一样的执行 • … 陷入模拟的问题 • 并不是所有的体系结构都支持 • 陷入的代价比较高 • 监视器在特权级别 – 需要虚拟化保护级别 二进制翻译 翻译器 客户代码 翻译缓存 调出 翻译缓存[TC] 索引 CPU 模拟例程 基本块 vPC mov ebx, eax cli and ebx, ~0xfff mov ebx, cr3 sti ret 客户代码 Straightline code 控制流图 基本块 二进制翻译 vPC mov ebx, eax cli and ebx, ~0xfff mov ebx, cr3 sti ret mov ebx, eax call HANDLE_CLI and ebx, ~0xfff mov [CO_ARG], ebx call HANDLE_CR3 call HANDLE_STI jmp HANDLE_RET 开始 客户代码 翻译缓存 二进制翻译 vPC mov ebx, eax cli and ebx, ~0xfff mov ebx, cr3 sti ret mov ebx, eax mov [CPU_IE], 0 and ebx, ~0xfff mov [CO_ARG], ebx call HANDLE_CR3 mov [CPU_IE], 1 test [CPU_IRQ], 1 jne call HANDLE_INTS jmp HANDLE_RET start 客户代码 翻译缓存 基本二进制翻译器 void BT_Run(void) { = _start。 BT_Continue()。 } void BT_Continue(void) { void *tcpc。 tcpc = BTFindBB()。 if (!tcpc) { tcpc = BTTranslate()。 } RestoreRegsAndJump(tcpc)。 } void *BTTranslate(uint32 pc) { void *start = TCTop。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。