使用嵌套分页进行应用程序级分页

时间:2011-04-07 18:42:39

标签: x86 paging virtualization

我不太熟悉新CPU的嵌套分页虚拟化功能,所以这个问题可能不是一个很好的问题,但我想到了一个想法:

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

这可以允许您将内存访问从应用程序的任何位置重定向到其他任何位置,即使您无法访问要重定向的代码。 (它甚至不需要映射到文件 - 当页面错误发生时,你可以动态生成数据。)

1 个答案:

答案 0 :(得分:1)

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

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

  

嵌套分页是一种供管理程序使用的功能。客人   跑步时无法观察到任何差异(性能除外)   在使用嵌套分页的管理程序下。嵌套分页没有   要求客户软件的任何更改。