32 位系统的地址空间是 0x00000000 到 0xffffffff。据我了解,这个地址空间将在系统内存 (RAM)、ROM 和内存映射外设之间分配。如果整个地址空间都用于在 4GB RAM 上寻址,那么所有 RAM 字节都可以访问。但是地址空间与其他内存映射外设一起分配,这是否意味着某些 RAM 将无法寻址/未使用?
最佳答案
Here是一个典型的 x86 系统的内存映射。正如您所看到的,较低的内存范围充满了 BIOS 和 ROM 数据,它们之间有很小的间隙。有很大一部分保留给较高范围的内存映射设备。所有这些细节可能因平台而异。检测哪些内存区域可以安全使用简直就是一场噩梦。
内核通常还会为其内部、缓冲区和高速缓存保留大部分可用内存。
随着virtual addressing的出现,内核可以将地址空间宣传为一个一致且无间隙的内存范围,但在幕后不一定如此。
关于linux - 内存在 32 位系统中未使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19936925/