39、深入理解内存页框管理:从分区到映射

深入理解内存页框管理:从分区到映射

1. 内存区域概述

在理想的计算机架构中,页框是一种通用的内存存储单元,能用于存储内核和用户数据、缓冲磁盘数据等,各类数据页都能无限制地存于其中。然而,现实中的计算机架构存在硬件限制,影响了页框的使用方式。以 Linux 内核在 80×86 架构下为例,需应对两个主要硬件限制:
- 旧 ISA 总线的直接内存访问(DMA)处理器只能寻址前 16 MB 的 RAM。
- 现代 32 位大内存计算机中,线性地址空间过小,CPU 无法直接访问所有物理内存。

为应对这些限制,Linux 2.6 将每个内存节点的物理内存划分为三个区域,在 80×86 UMA 架构下分别为:
| 区域名称 | 内存范围 |
| ---- | ---- |
| ZONE_DMA | 低于 16 MB 的内存页框 |
| ZONE_NORMAL | 16 MB 及以上、896 MB 以下的内存页框 |
| ZONE_HIGHMEM | 896 MB 及以上的内存页框 |

ZONE_DMA 区域的页框可供旧 ISA 设备通过 DMA 使用;ZONE_DMA 和 ZONE_NORMAL 区域的“正常”页框可被内核通过线性地址空间第四千兆字节的线性映射直接访问;而 ZONE_HIGHMEM 区域的页框无法通过此线性映射直接访问,且在 64 位架构中该区域始终为空。

每个内存区域都有类型为 zone 的描述符,其字段如下:
| 类型 | 名称 | 描述 |
| ---- | ---- | ---- |
| unsigned long | free_pages | 区

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值