linux - 内存在 32 位系统中未使用?

标签 linux memory memory-management kernel memory-address

32 位系统的地址空间是 0x00000000 到 0xffffffff。据我了解,这个地址空间将在系统内存 (RAM)、ROM 和内存映射外设之间分配。如果整个地址空间都用于在 4GB RAM 上寻址,那么所有 RAM 字节都可以访问。但是地址空间与其他内存映射外设一起分配,这是否意味着某些 RAM 将无法寻址/未使用?

最佳答案

Here是一个典型的 x86 系统的内存映射。正如您所看到的,较低的内存范围充满了 BIOS 和 ROM 数据,它们之间有很小的间隙。有很大一部分保留给较高范围的内存映射设备。所有这些细节可能因平台而异。检测哪些内存区域可以安全使用简直就是一场噩梦。

内核通常还会为其内部、缓冲区和高速缓存保留大部分可用内存。

随着virtual addressing的出现,内核可以将地址空间宣传为一个一致且无间隙的内存范围,但在幕后不一定如此。

关于linux - 内存在 32 位系统中未使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19936925/

相关文章:

linux - Oracle XE - 安装后无法登录

python - 有没有办法以编程方式获取 ps 输出?

ruby-on-rails - Rails 应用程序中的内存泄漏......字符串噩梦

c++ - 多个 C++ 删除多个对象指向的内存

c - 此代码是否包含释放后使用?

linux - 重置 Google 计算引擎 VM 无法通过 SSH 连接到实例

c - 按 C 中的任意键停止控制台程序

java - 哈希表使用多少内存?

c++ - 并行实例化类导致与内存相关的错误

c++ - 内存池背后的常见实现细节是什么?