ZONE_DMA32

Linux系统通常将主内存划分为三个区域。大多数内存分配到ZONE_NORMAL区域 。 在低端,有16MB的内存被分区到DMA区域ZONE_DMA中,该内存被保留用于特定需要的情况。DMA内存最常见的用户是较旧的外设,它只能寻址24位内存。在高端,ZONE_HIGHMEM包含内核无法直接寻址的所有内存。

并非所有系统都实现所有这些区域。一些较新的体系结构不支持古老的外围设备,而忽略了区域 ZONE_DMA。
一般来说,64位系统没有寻址问题,也不需要ZONE_HIGHMEM。
IA64体系结构决定了ZONE_DMA的另一种实现方式,将其定义为覆盖4GB以下的所有内存。

事实证明,4GB区域有很多用途。相当多的设备在访问不能用32位寻址的内存时遇到问题。这些设备的驱动程序已经被强制使用ZONE_DMA、I/O存储器管理单元(在有ZONE_DMA的系统上)或缓冲区。这些解决方案都不是理想的:ZONE_DMA是一个小而稀缺的资源,IOMMU空间也可能稀缺,反弹缓冲区也很慢。如果在4GB边界下可靠地分配DMA内存,所有这些问题都可以避免。

在64位Linux操作系统上,分区如下:
最开始的16M内存是DMA ZONE 内存,用slab分配器的kmalloc分配获取。
DMA32 ZONE为16M~4G,高于4G的内存为Normal ZONE。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值