【问题标题】:Why kernels make use of the high logical address为什么内核使用高逻辑地址
【发布时间】:2018-07-06 08:36:27
【问题描述】:

适用于 32 位操作系统。 linux内核占用高逻辑地址3~4GB(windows为2~4GB)。 我想知道为什么设计者选择高地址,而不是 linux 的 0~1GB,因为内核实际上是在 phiscal 低地址,选择低逻辑地址会导致逻辑/物理关系更加和谐。为什么不呢?

【问题讨论】:

  • @MarkPlotnick 我确实知道 3G/1G 拆分的优点,但为什么不知道 1G/3G,问题没有;没有回答
  • @sawdust 我无法理解用户程序能够从零占用低地址的优势。一方面,它与 ONE Giga 几乎没有区别(作为 C/C++ 程序员,我从不关心我的程序将位于何处),另一方面,实际上,gcc/g++ 默认链接程序不是从 0 ,我是通过objdump -h /bin/ls 找到的

标签: linux linux-kernel operating-system kernel windows-kernel


【解决方案1】:

在PIC(Position-independent code)流行之前,有很多静态链接的程序只能在指定地址加载,可能是0x400000

为了能够兼容这些程序,内核必须不获取地址空间。所以内核位于高1G地址空间。

【讨论】:

    猜你喜欢
    • 2012-02-01
    • 1970-01-01
    • 2019-07-03
    • 2012-10-11
    • 1970-01-01
    • 2018-10-02
    • 1970-01-01
    • 2015-06-25
    • 2019-02-19
    相关资源
    最近更新 更多