当前位置: 首页 > news >正文

物理内存组织与分配的核心概念

在 Linux 内核内存管理(尤其是 Buddy System 伙伴系统)中,nodezonetypeorder 是描述物理内存组织与分配的核心概念。以下是它们的详细解释:


1. Node(NUMA 节点)

  • 定义
    NUMA(Non-Uniform Memory Access)架构中,物理内存和 CPU 被划分为多个节点(Node),每个节点包含一部分本地内存和 CPU。访问本地内存速度快于远程内存。
  • 作用
    • 优化内存访问延迟:优先从当前 CPU 所在 Node 分配内存。
    • 管理本地内存资源:每个 Node 独立维护自己的内存区域(Zones)和空闲列表。
  • 示例
    服务器中可能存在多个 NUMA Node(如 Node 0Node 1),每个 Node 服务一组 CPU 核。
    手机一般只有一个Node 0
    在这里插入图片描述

2. Zone(内存区域)

  • 定义
    每个 Node 中的物理内存被划分为多个 Zone,用于处理硬件限制或特殊用途的内存分配。
  • 常见 Zone 类型
    • ZONE_DMA:供 DMA(Direct Memory Access)设备使用的低端内存(通常 ≤16MB)。
    • ZONE_DMA32(64位系统):支持 32 位地址的 DMA 内存(≤4GB)。
    • ZONE_NORMAL:可直接映射到内核虚拟地址空间的内存(通常 16MB~896MB)。
    • ZONE_HIGHMEM(32位系统):高端内存,需动态映射到内核虚拟地址空间(>896MB)。
    • ZONE_MOVABLE:可迁移内存,用于减少内存碎片。
  • 作用
    根据内存用途(如 DMA、内核映射)隔离管理,确保特定类型的内存请求得到满足。
    在这里插入图片描述

3. Type(迁移类型)

  • 定义
    在 Zone 内部,内存页框(Page)按 迁移类型(Migrate Type) 分类,用于对抗内存碎片。
  • 常见类型
    • MIGRATE_UNMOVABLE:不可移动(如内核数据结构)。
    • MIGRATE_MOVABLE:可移动(如用户态进程内存)。
    • MIGRATE_RECLAIMABLE:可回收(如文件缓存)。
    • MIGRATE_CMA:连续内存分配专用类型。
  • 作用
    • 将相同迁移类型的页框分组,减少内存碎片。
    • 提高大块连续内存分配的可靠性(如 order > 0 的分配)。
      在这里插入图片描述

4. Order(分配阶数)

  • 定义
    Order 表示伙伴系统中内存块的大小,计算公式为 2^order 个连续页框。
    • order=0 → 1 页(4KB)。
    • order=1 → 2 页(8KB)。
    • order=10 → 1024 页(4MB)。
  • 作用
    • 伙伴系统通过维护不同 Order 的空闲列表(如 free_area[order])快速分配和释放内存。
    • 高阶内存块不足时,可拆分更高阶的块;释放时合并相邻块以形成更大块。

内存分配流程示例

  1. 选择 Node:根据 NUMA 策略(如当前 CPU 的本地 Node)确定目标 Node。
  2. 选择 Zone:根据内存用途(如 DMA 请求必须从 ZONE_DMA 分配)。
  3. 选择 Type:根据页框迁移类型(如分配用户内存优先选择 MIGRATE_MOVABLE)。
  4. 选择 Order:根据请求的大小找到最小满足的 Order。

总结

  • Node:NUMA 架构中的内存节点,优化访问局部性。
  • Zone:处理硬件限制,隔离不同用途的内存。
  • Type:对抗碎片,按页框迁移能力分类。
  • Order:伙伴系统中定义内存块大小的阶数。

这些层级结构共同实现高效、灵活的内存管理,平衡性能、碎片控制和硬件兼容性。

相关文章:

  • Spring Boot 流式响应豆包大模型对话能力
  • 在ubuntu 24.04.2 通过 Kubeadm 安装 Kubernetes v1.31.6
  • 简洁的个人地址发布页HTML源码
  • conda环境管理 kernel注册到jupyter notebook
  • nginx+keepalived负载均衡及高可用
  • 算法之领域算法
  • Web-to-Web和Server-to-Serve归因方法
  • 一文弄懂TCP断开连接时候的四次挥手
  • iOS接入Flutter项目
  • HTTP~文件 MIME 类型
  • 【量化科普】Drawdown,回撤
  • 基于log4j的自定义traceid实现
  • Spring AOP(教科书式的教程)
  • FASIONAD:自适应反馈的类人自动驾驶中快速和慢速思维融合系统
  • 使用AoT让.NetFramework4.7.2程序调用.Net8编写的库
  • QT异步编程之线程池QThreadPool
  • Chromium项目相关
  • 增强for循环
  • 基于yolov8的糖尿病视网膜病变严重程度检测系统python源码+pytorch模型+评估指标曲线+精美GUI界面
  • 15.12 LoRA低秩适配微调:微软的高效微调革命
  • 甘肃省城乡和建设厅网站首页/软文投放平台有哪些
  • 如何打破违法网站/上海有哪些优化网站推广公司
  • 短视频营销的概念/外贸网站优化
  • 做pc端网站如何/济南百度seo
  • 湖北潜江疫情最新消息/处理器优化软件
  • 个人网站建设方案书 范文/模板免费网站建设