Linux 中的寻址

Linux 中的寻址

我正在尝试理解寻址和内存。 《嵌入式Linux入门》一书说

请注意,名为 hello 的进程认为它正在高于 256MB 边界 (0x10000418) 的高 RAM 中的某个位置执行。另请注意,堆栈地址大约位于 32 位地址空间的一半,远远超出了我们的 256MB RAM (0x7ff8ebb0)。怎么会这样?在此类系统中,DRAM 通常是连续的。对于不经意的观察者来说,我们似乎有近 2GB 的 DRAM 可供使用。这些虚拟地址由内核分配,并由 Yosemite 主板上 256MB 可用内存范围内的物理 RAM 支持。

我已附上与上述声明相关的代码和输出。

我想了解 32 位寻址如何转换为 2GB 内存。如果每个地址由 4 位内存组成,则 0 到 0xFFFFFFFF 转换为 2GB 内存。

计算:0XFFFFFFFF 十进制为 4294967295。每个地址 4 位。即 (4294967295*4)/8 = 2147483647.5 字节 = 2.1 GB

  1. 每个地址可以容纳 4 位内存,我对吗?
  2. 每个地址的位数是如何决定的?

谢谢

代码输出

相关内容