首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >1型VMM和环形1型

1型VMM和环形1型
EN

Stack Overflow用户
提问于 2012-10-15 16:37:47
回答 2查看 778关注 0票数 1

最近,我正在做关于虚拟化的作业。我的问题是,VMM如何将控制权转移到来宾内核并在第1环中运行该代码?

类型-1 VMM:这是经典的陷阱和模仿的VMM。VMM直接在硬件上运行,在Ring 0中充当“主机操作系统”。客户内核和客户应用程序分别运行在VMM上,在第1环和第3环中。

  1. 当Guest应用程序创建syscall时,它将捕获到Ring 0 VMM,(CPU就是为此而设计的)。
  2. 然后,VMM将检测到这是一个syscall,然后将控制转移到客户内核syscal处理程序,并在环1.中执行它。
  3. 当它完成时,客户内核执行syscall-返回,这是一个特权调用,它将再次陷入VMM。
  4. 然后,VMM对第3环中的来宾用户空间进行真正的返回。(CPU也是为此设计的。)

我的问题是关于第2步,如何将控制转移到客户内核并迫使CPU响1?自那时起,来宾内核代码将在环0中运行,所以不能是简单的“调用”。它必须是某种“syscall-返回”或一些特殊的上下文切换指令。

你有什么主意吗?谢谢!

EN

回答 2

Stack Overflow用户

发布于 2013-10-01 16:48:32

只需使用带有RPL=1的CS选择器运行客户操作系统(尽管在x86上)。从特权较高的环返回到较低的环通常使用iret完成。

票数 1
EN

Stack Overflow用户

发布于 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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12900074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档