linux内存管理(上篇-物理内存组织)
需积分: 0 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 内存管理的入门介绍,更多的细节和实现细节将在后续文章中继续介绍。


sheng3690
- 粉丝: 2
最新资源
- 基于规则算法的功率跟随控制:燃料电池汽车能量管理策略及其MATLAB数据分析
- (源码)基于C++的贪吃蛇游戏.zip
- 基于模态计算与声振耦合仿真的玻璃隔声量研究及其工程应用
- (源码)基于Python和Arduino的复古LED条形音频可视化器.zip
- 基于Matlab的ESMD信号分解算法:极值点驱动的数据处理与分析 · 时频分析
- 基于MATLAB的特征子集选择(FSS)与前后搜索法实现及应用
- (源码)基于Arduino的JoystickBuzzer音乐控制器项目.zip
- 模块化多电平换流器MMC的载波移相调制及PLECS仿真研究:工况参数为AC3.3kvDC6kv,采用N=6配置,优化双闭环控制与均压策略
- 基于UDP千兆以太网协议栈的纯FPGA Verilog OV5640图像采集系统实现
- (源码)基于Android的学习应用.zip
- CNG加气站设计:从背景到工艺流程的全面解析与实施方案
- (源码)基于C++的面试算法学习项目.zip
- 基于MATLAB的石川公式法齿轮时变啮合刚度计算及应用 宝典
- 基于MATLAB的EKF-GMPHD与UKF-GMPHD多目标跟踪算法研究及仿真 v4.0
- (源码)基于C++语言的RGB到YCbCr颜色空间转换系统.zip
- 永磁同步电机接地故障检测与处理的技术解析及Python代码实现 信号处理 (07月)