《深入Linux内核架构》笔记:(N)UMA模型中的内存组织

本文详细介绍了Linux内核在UMA模型下内存组织的原理,包括内存域的划分如ZONE_DMA、ZONE_NORMAL和ZONE_HIGHMEM等,以及pg_data_t结构体在结点管理中的作用,如node_zones和node_zonelists字段。此外,还提到了结点状态管理,如N_POSSIBLE、N_ONLINE状态,以及相关的位图操作函数。
摘要由CSDN通过智能技术生成

1.概述

    在Linux中,内核对一致和非一致内存访问系统使用相同的数据结构,因此针对各种不同形式的内存布局,各个算法几乎没有什么差别。在UMA系统上,只使用一个NUMA结点来管理整个系统内存。

    首先内在划分为结点。每个结点关联到系统中的一个处理器,在内核中表示为pg_data_t的结构。

    各个结点又划分为内存域,是内存的进一步细分。例如,对可用于(ISA设备的)DMA操作的内存区是有限制的。只有前16M适用,还有一个高端内存区域无法直接映射。在二者之间是通用的“普通”内存区。因此一个结点最多有3个内存域组成,如下图

内核引入了下列常量来枚举系统中的所有内存域:

 

 

◆ ZONE_DMA标记适合DMA的内存域。该区域的长度依赖于处理器类型。

◆ ZONE_DMA32标记了使用32位地址字可寻址、适合DMA的内存域。显然只有在64位系统上两种DMA内存域才有差别。

◆ ZONE_NORMAL标记了可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值