我正在尝试理解寻址和内存。 《嵌入式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
- 每个地址可以容纳 4 位内存,我对吗?
- 每个地址的位数是如何决定的?
谢谢