LInux的内存管理有其特殊性,简单做些了解
32-bit 系统:
ZONE_DMA,ZONE_NORMAL,ZONE_HIGHMEM
64-bit 系统:
ZONE_DMA,ZONE_NORMAL
名词解释:
ZONE_DMA
范围是0~16M,该区域的物理页面专门供I/O设备的DMA使用。之所以需要单独管理DMA的物理页面,是因为DMA使用物理地址访问内存,不经过MMU,并且需要连续的缓冲区,所以为了能够提供物理上连续的缓冲区,必须从物理地址空间专门划分一段区域用于DMA。
ZONE_NORMAL
范围是16M~896M,该区域的物理页面是内核能够直接使用的。
ZONE_HIGHMEM
范围是896M~结束,该区域即为高端内存,内核不能直接使用。在64bit中取消了该区域
DMA
Direct Memory Access,直接内存存取; 是所有现代电脑的重要特色,它允许不同速度的硬件装置来沟通,而不需要依赖于 CPU 的大量中断负载。否则,CPU 需要从来源把每一片段的资料复制到暂存器,然后把它们再次写回到新的地方。在这个时间中,CPU 对于其他的工作来说就无法使用。
MMU
Memory Management Unit的缩写,中文名是内存管理单元,它是中央处理器(CPU)中用来管理虚拟存储器、物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权,多用户多进程操作系统。
参考资料: