Linux内存从0到1学习笔记(6.5,物理内存初始化之物理内存管理数据结构)

49 篇文章 68 订阅 ¥39.90 ¥99.00
本文详细介绍了Linux内核中内存管理的关键数据结构,包括pglist_data内存节点、内存管理区zone及其类型,以及Page页帧。深入探讨了contig_page_data、node_data[]、zonelist和zoneref等组成部分,旨在梳理物理内存初始化过程中的数据结构关系。
摘要由CSDN通过智能技术生成

写在前面

在BootLoader阶段,内存设备的初始化就已经完成。随后把DDR设备容量大小传递给内核。Linux内核的管理实际上是对如内存节点(pglist_data)、内存管理区(zone),mem_map[]数组,页表项(PTE),物理内存Page Frame 页帧,页框号(PFN),物理地址(paddress)等数据结构的管理。

内存以结点为单位,关联到系统中的一个处理器,在内核中即pglist_data(别名pg_data_t)实例。

进一步细分,各个结点又划分内存域;例如,对于可用于(ISA设备的)的DMA操作的内存是有限制的,只有16MB。一个结点常常有三个域,包括ZONE_DMA,ZONE_DMA32,ZONE_NORMAL。

各个内存域都关联了一个数组,用来组织该内存域下的物理内存页(页帧或页框)。对每个页帧都分配了一个struct page实例以及所需的管理数据。

内存节点,内存域,页帧的关系如下图(UMA):

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高桐@BILL

分享快乐,快乐分享...

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值