【问题标题】:Using Nested Paging for Application-Level Paging使用嵌套分页进行应用程序级分页
【发布时间】:2011-04-07 18:42:39
【问题描述】:

我对较新 CPU 的 Nested Paging 虚拟化功能不太熟悉,所以这个问题可能不是一个好问题,但我想到了一个想法:

是否可以在我们的应用程序中使用嵌套分页来启用我们自己的分页机制(类似于内存映射文件)?

这可以让您将内存访问从应用程序的任何地方重定向到其他任何地方,即使您无权访问您正在重定向的代码。 (不过,它甚至不需要映射到文件——当页面错误发生时,您可以动态生成数据。)

【问题讨论】:

    标签: x86 paging virtualization


    【解决方案1】:

    我认为这是不可行的。我不知道细节,但我认为设置嵌套页表必须在管理程序模式下完成,这比内核模式更有特权。要在用户模式下使用它,您需要运行一个管理程序,它为用户模式(或内核模式,然后将其提供给用户模式)提供某种 API。从用户模式应用程序中使用一些扩展的 CPU 指令并不是一件简单的事情。我怀疑这些收益是否能证明所需要的努力是合理的。

    编辑:听起来我是对的。引用AMD-V™ Nested Paging white paper, 第 4.2.3 节:“使用嵌套分页”:

    嵌套分页是供管理程序使用的功能。客人 运行时无法观察到任何差异(性能除外) 在使用嵌套分页的管理程序下。嵌套分页不 需要对来宾软件进行任何更改。

    【讨论】:

    • 这没有意义... VirtualBox 使用嵌套分页,但它与 Hypervisor 模式无关(对吗?)。
    • @Mehrdad:我所知道的是,当我安装它时,我必须点击许多关于未签名内核模式驱动程序的警告。
    • @Hugh:等等,但是如何在 Windows 启动之后启动管理程序?这对我来说没有意义..
    • @Mehrdad:好的,我做了一些阅读并添加了一个参考来支持我不知情的猜测:)
    • @Hugh:嗯,有趣,谢谢。 :) 但问题仍然存在:VirtualBox 如何在 Windows 启动之后启动它自己的虚拟机管理程序?即使管理程序是稳定的(我对此表示怀疑,因为 VB 本身几乎没有稳定,更不用说如此关键的组件了),它也不可能操作系统之后启动,不是吗? (而且它不像它在操作系统加载器之前加载,所以......)
    猜你喜欢
    • 2020-01-18
    • 1970-01-01
    • 2017-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-08
    • 1970-01-01
    • 2013-09-19
    相关资源
    最近更新 更多