活动介绍

linux内存管理(上篇-物理内存组织)

preview
需积分: 0 5 下载量 104 浏览量 更新于2023-01-16 2 收藏 2.94MB PPTX 举报
Linux 内存管理(上篇-物理内存组织) Linux 内存管理是一个非常复杂的主题,本篇文章将着重介绍物理内存组织的概念和实现细节。 物理寻址和虚拟寻址 在 Linux 中, CPU 直接操作物理地址,读取 4 字节数据字。在虚拟寻址中,虚拟地址到物理地址的转换依赖于硬件的 MMU 和操作系统页表的配合。 UMA 和 NUMA UMA(Uniform Memory Access)是一个单一的内存模型,每个处理器核心都可以访问整个系统的内存。在 NUMA(Non-Uniform Memory Access)架构中,每个处理器核心都有自己的本地内存,访问远程内存需要通过互连网络。 内存模型 Linux 内存管理子系统使用节点、区域和页三级结构来描述物理内存。节点是物理内存的基本单位,区域是节点中的一个子集,页是区域中的一个小单元。 节点(Node) 在 UMA 系统中,一个节点就是一块连续的物理内存,用 pglist_data 结构体描述。每个节点都有一个 zone 结构体,zone 结构体中包含了该节点的所有信息。 区域(Zone) 区域是节点中的一个子集,因为实际的计算机体系结构有硬件的诸多限制,这限制了页框可以使用的方式。Linux 内核将物理地址或者成用 zone_t 表示的不同地址区域,例如 DMA zone、DMA32 zone、Normal zone、HighMem zone 等。 页(Page) 页是区域中的一个小单元,是 CPU 访问存储器的基本单位。页的大小可以是 4KB、8KB、16KB 等,取决于系统的架构和配置。 内存初始化 内存初始化是 Linux 启动过程中的一个重要步骤。head.S 汇编阶段的内存初始化将创建初始阶段的页表,start_kernel C 语言阶段的内存初始化将建立内核虚拟地址空间。 identity mapping identity mapping 是指把 idmap_text 区域的物理地址映射到相等的虚拟地址上,这种映射完成后,其虚拟地址等于物理地址。 kernel image mapping kernel image mapping 将 kernel 运行需要的地址(kernel txt、rodata、data、bss 等等)进行映射,start_kernel early_fixmap_init 内核访问 DTB 物理地址,先将 DTB 所在的物理地址映射到内核虚拟地址空间的 Fixed map 区域,然后通过该虚拟地址区域间接访问 DTB 文件。 本篇文章只是 Linux 内存管理的入门介绍,更多的细节和实现细节将在后续文章中继续介绍。
身份认证 购VIP最低享 7 折!
30元优惠券
sheng3690
  • 粉丝: 2
上传资源 快速赚钱
voice
center-task 前往需求广场,查看用户热搜