最近,我正在做关于虚拟化的作业。我的问题是,VMM如何将控制权转移到来宾内核并在第1环中运行该代码?
类型-1 VMM:这是经典的陷阱和模仿的VMM。VMM直接在硬件上运行,在Ring 0中充当“主机操作系统”。客户内核和客户应用程序分别运行在VMM上,在第1环和第3环中。
我的问题是关于第2步,如何将控制转移到客户内核并迫使CPU响1?自那时起,来宾内核代码将在环0中运行,所以不能是简单的“调用”。它必须是某种“syscall-返回”或一些特殊的上下文切换指令。
你有什么主意吗?谢谢!
发布于 2013-10-01 16:48:32
只需使用带有RPL=1的CS选择器运行客户操作系统(尽管在x86上)。从特权较高的环返回到较低的环通常使用iret完成。
发布于 2012-10-29 16:24:45
Xen是在第1环中运行客户OSes的VMMs之一,在Xen中,诸如HLT指令(在运行OSes的第1环中的指令)被超调用所取代。在这种情况下,不像在Linux内核中那样调用HLT指令,而是调用xen_idle()方法。它执行一个超级调用,即管理特权环交换的HYPERVISOR_sched_op(SCHEDOP_block,0)超级调用。有关更多信息,请参见:
http://www.linuxjournal.com/article/8909
https://stackoverflow.com/questions/12900074
复制相似问题