我遇到过一个术语 - Linux中的内存漏洞。我相信这是重新映射I / O的内存。我的理解是否正确?
答案 0 :(得分:9)
记忆中的洞可能意味着不同的东西:
1)它可以指物理内存寻址:出于历史和启动捆绑的原因,在标准PC" (x86)架构,所有系统RAM都不连续。有"洞"在内存映射I / O所在的地址空间中。例如,从最早的日子开始,就存在为引导ROM(BIOS)和视频存储器保留的区域。此外,存在大面积的地址空间,其被保留用于动态分配给PCI(和PCI-X或PCI-Express)外围设备。这些区域通常由设备驱动程序根据需要映射到内核虚拟地址空间(可以称为" I / O重映射")。
内置于主板的内存控制器允许配置RAM的物理地址(这通常由标准PC架构中的BIOS处理)。其他[非x86]架构通常在物理地址空间中具有类似的漏洞。
2.)该术语还可以指虚拟地址空间中的未分配区域。内核虚拟地址空间和用户进程都是'虚拟地址空间通常有"空洞"在他们中。例如,linux没有映射对应于虚拟地址0的任何物理内存(即地址空间的第一页永远不会有有效的内存) - 这允许捕获空指针引用。
在某些类型的内存分配中,linux内核在正确分配的虚拟内存区域之间维护未映射的区域,以便捕获错误的内存引用(即,在分配的空间的末尾之外浪费)。