【问题标题】:Address Translation of Non Paged Memory非分页内存的地址转换
【发布时间】:2016-10-12 16:59:26
【问题描述】:

内核内存中的许多部分是不可分页的。

  1. 这些区域的页表设置是什么?如何为它们完成逻辑到物理的映射?

  2. 恒等映射和有线内存(不可分页内存)之间有什么关系吗?

【问题讨论】:

    标签: linux-kernel operating-system kernel linux-device-driver netbsd


    【解决方案1】:

    对于非分页内存,系统所要做的就是确保物理页框映射到逻辑地址,并且页框没有取消映射。分页和非分页内存的页表通常相同。

    【讨论】:

    • 谢谢。如果内存是不可分页的,我们不会做很大的地址转换工作,因为我们寻找的地址总是在某个基点主内存的某个偏移处,这不是真的吗?为什么我们仍然需要为它们填充页表?
    • 在大多数系统上都需要一个页表,以便内核代码可以访问内存。甚至内核代码也使用逻辑地址转换。
    • 是的。我同意这一点。分页或非分页的每个地址都是一个虚拟地址。我的真正意思是,如果某些东西必须永久固定在 RAM 中,那我们为什么要为它们浪费 PTE。我们可以只使用一个特殊的寄存器来保存每个位置的起始虚拟/物理地址对,其余的转换将是算术运算。由于这个区域永远不会出错,我们可以将 PTE 条目用于不同的东西。不过感谢您的回复。
    • 那么如何将这些位置放在内存中的非固定位置以及处理器如何将这些位置与任何其他位置相同?
    • MMU 可以稍作修改,以便非分页内存的工作集在加载后通过添加(或减去)一个常量基值来享受转换。据我了解,处理器对如何访问地址没有任何发言权。仅当 MMU 引发页面错误异常(针对分页内存)时,中断处理程序才会触发请求分页序列。位置无关紧要,因为只有在加载模块后才会形成地址。因此,“修改”MMU 的编程将仅在加载发生后完成,其方式与为动态内存加载 TLB 完全相同。
    猜你喜欢
    • 2015-12-24
    • 2012-03-21
    • 1970-01-01
    • 1970-01-01
    • 2015-01-03
    • 2020-12-08
    • 2019-07-03
    • 1970-01-01
    • 2010-09-26
    相关资源
    最近更新 更多