【问题标题】:What is use of extended page table?扩展页表有什么用?
【发布时间】:2015-05-17 22:03:42
【问题描述】:

我们可以用c程序显示页表地址吗? 页表和扩展页表有什么区别?

【问题讨论】:

    标签: c operating-system cpu computer-architecture processor


    【解决方案1】:

    我们可以用c程序显示页表地址吗?

    不使用普通的 C 程序,不,你不能。用户模式程序在内核提供的虚拟内存中运行,使用分页机制。所有这些都被抽象出来了,所以用户空间对此一无所知。

    Linux 内核确实为用户空间提供了一种机制来观察页表,但如 this question 所示。

    页表和扩展页表有什么区别?

    “扩展页表”是 Intel 对Second Level Address Translation (SLAT), also known as nested paging 的实现,用于更有效地虚拟化来宾 VM 的内存。

    基本上,客户虚拟地址首先转换为客户物理地址,然后再转换为主机物理地址。这一切都在硬件中完成(由 MMU),以避免 VMM 需要在软件中完成额外的工作。

    【讨论】:

    • 实际上一个C程序可以显示页表地址。但那是一个用 C 编写的内核模式驱动程序。好吧,但我认为 OP 在询问内核模式与用户模式程序方面并不先进
    【解决方案2】:

    1] 什么是二级页表 扩展页表是一种机制,允许每个虚拟机管理其页表,而无需访问底层主机的 MMU - 硬件。 快速浏览下面的链接。它应该给出一个想法 http://www.cs.cmu.edu/~dga/15-440/F10/lectures/vm-ucsd.pdf

    2] 是否可以使用 C 程序打印页表? - 完全有可能。您的系统中将有一个 MMU 驱动程序。 MMU 驱动程序将在 RAM 的某些部分设置页表。你需要知道那个位置。 在传统操作系统 [linux、windows 等] 中。该内存区域将具有特权,因此应用程序可能无法直接访问。 如果您的平台是一个运行着微内核的嵌入式系统,那么您可能能够访问此表。

    【讨论】:

      猜你喜欢
      • 2012-08-11
      • 2012-01-27
      • 2014-02-02
      • 2011-08-17
      • 1970-01-01
      • 2012-12-17
      • 1970-01-01
      • 2012-02-05
      • 2011-11-07
      相关资源
      最近更新 更多