linux内存管理之zone

Linux内核根据硬件限制将内存分为ZONE_DMA、ZONE_NORMAL和ZONE_HIGHMEM三个区域,以适应不同设备和任务需求。ZONE_DMA适用于DMA访问,ZONE_NORMAL用于内核高性能操作,而ZONE_HIGHMEM则是对内核无法直接映射的高地址内存的管理。这些zone的定义在"linux/mmzone.h"文件中,每个zone由struct zone结构表示,包含如lock、free_pages等关键属性。
摘要由CSDN通过智能技术生成

由于硬件的限制,kernel很难将所有的pages同等看待。对于一些pages,因为它们的物理地址在内存中,导致并不能被应用于一些特定的任务。由于这些限制,kernel将pages分到了不同的zone中。kernel会判断pages的属性,将具有相似属性的pages分到同一个zone。还需注意的是,Linux还需要解决硬件关于内存地址两个问题:

  • 有些硬件设备只能使用DMA(direct memory access)访问到特定的内存地址。
  • 有一些结构物理地址可以访问到的内存比虚拟地址要多。

也由于这些限制,Linux分为了三个zone:

  • ZONE_DMA(0-16 MB): 包含 ISA/PCI 设备需要的低端物理内存区域中的内存范围,这块区域由标准工业架构(Industry Standard Architecture)设备使用,适合DMA内存。这部分区域大小和CPU架构有关,在x86架构中,该部分区域大小限制为16MB。。
  • ZONE_NORMAL(16-896 MB):由内核直接映射到高端范围的物理内存的内存范围。所有的内核操作都只能使用这个内存区域来进行,因此这是对性能至关重要的区域。
  • ZONE_HIGHMEM(896 MB 以及更高的内存):系统中内核不能映射到的其他可用内存。

x86的物理地址空间布局:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值