【问题标题】:In linux kernel what is difference between page address, virtual address and physical address在linux内核中,页面地址,虚拟地址和物理地址有什么区别
【发布时间】:2015-10-29 15:27:27
【问题描述】:

在linux内核中,页地址、虚拟地址和物理地址有什么区别?另外,如果我有 struct page 地址,我怎样才能找到它的虚拟地址?

有人可以就Linux内核版本3.10解释清楚吗?

提前感谢您的回答。

【问题讨论】:

    标签: linux linux-kernel


    【解决方案1】:

    物理地址是 RAM 中的地址。一旦达到可用物理内存的限制,内核必须分配某个地方,那个地方就是虚拟地址空间。虚拟内存的映射使得您拥有比物理内存更多的可用内存,这是通过将虚拟内存分成称为页面的块来完成的。

    每个虚拟地址都映射到物理内存中的一个位置,其中物理地址与虚拟地址之间存在一对多的关系,即,有许多虚拟地址映射到同一个物理位置。这种映射是通过页表中的地址转换来完成的。

    页面是虚拟内存的最小单位。页面大小因架构和实现而异,但在 x86 for Linux 上为 4 KiB。使用虚拟内存时,您必须读取整个页面,而不仅仅是一个块。当您说“页面地址”时,您可能指的是页面中可以找到特定虚拟地址的索引。

    在对我的答案进行事实核查时,我发现了一些很好的pages,它可能会帮助您更好地理解虚拟内存。前 2 个是 Wikipedia,相当笼统,后两个是 Linux 特定的:

    Virtual Memory

    Paging

    Linux page 1page 2 的内存管理

    【讨论】:

    • 大页面呢?
    • 默认值仍然是 4 KiB。
    猜你喜欢
    • 2014-03-15
    • 2014-09-14
    • 2012-02-01
    • 2019-07-03
    • 1970-01-01
    • 2019-12-06
    • 1970-01-01
    • 2016-10-05
    • 1970-01-01
    相关资源
    最近更新 更多