Linux系统启动后内存使用分析详解
需积分: 29 83 浏览量
更新于2024-09-09
收藏 87KB DOCX 举报
Linux内存使用分析
Linux系统启动后,内核如何加载到内存,以及放在内存何处?文件系统如何加载,又放到内存何处?这些问题都是Linux内存使用分析的重点。本文将详细讲述Linux系统启动后,内存的实际使用情况,从设备上电后,内核加载、文件系统搬运、以及设备树读入是怎样进行的。
**Linux内核加载**
在Uboot的最后阶段会执行do_bootm命令,该命令是加载kernel、ramdisk、devicetree到内存指定的地址,将以上三个重要文件搬运到内存后,利用jump命令直接调到内核的入口处去执行。do_bootm_states是准备环境,load内核、文件系统到内存的函数。bootm_start是启动内核的函数,bootm_find_os是查找有效的os,bootm_find_other是加载文件系统到指定的内存处,bootm_load_os是加载内核到内存0x8000,boot_ramdisk_high是分配内存,用于存储ramdisk。
在加载内核时,会将内核加载到内存0x8000处,其中0-0x8000用于存储pagetable等信息。在加载文件系统时,会将文件系统加载到内存0x1f763000处,大小为34M左右。
**文件系统加载**
文件系统是基于ext2的ramdisk.tar.gz文件系统,由于含有qt库,因此即使压缩文件系统也有34M的大小,解压后至少100M还多!在加载文件系统时,会将文件系统加载到内存0x1f763000处,大小为34M左右。
**内存管理**
在Linux系统中,内存管理是非常重要的。从上图中可以看到kernel的实际加载地址为0x8000(实际的物理地址),文件系统实际加载的物理地址为0x1f763000,大小为34M左右。由于目前没有虚拟地址管理,所以到了内核阶段这些地址都会加上0xc0000000映射成虚拟地址,统一由MMU进行管理。
**MMU管理**
MMU(Memory Management Unit)是Linux系统中的内存管理单元。MMU负责将物理地址映射到虚拟地址,以便进程可以访问内存。MMU同时也负责内存保护,防止进程访问非法的内存区域。
Linux系统启动后,内核加载到内存0x8000处,文件系统加载到内存0x1f763000处。Linux系统的内存管理是非常重要的,MMU负责将物理地址映射到虚拟地址,以便进程可以访问内存。
2012-06-28 上传
2023-12-26 上传
2010-04-16 上传
2021-05-08 上传
2019-08-11 上传
xiaochubing20023
- 粉丝: 6
- 资源: 19
最新资源
- 探索AVL树算法:以Faculdade Senac Porto Alegre实践为例
- 小学语文教学新工具:创新黑板设计解析
- Minecraft服务器管理新插件ServerForms发布
- MATLAB基因网络模型代码实现及开源分享
- 全方位技术项目源码合集:***报名系统
- Phalcon框架实战案例分析
- MATLAB与Python结合实现短期电力负荷预测的DAT300项目解析
- 市场营销教学专用查询装置设计方案
- 随身WiFi高通210 MS8909设备的Root引导文件破解攻略
- 实现服务器端级联:modella与leveldb适配器的应用
- Oracle Linux安装必备依赖包清单与步骤
- Shyer项目:寻找喜欢的聊天伙伴
- MEAN堆栈入门项目: postings-app
- 在线WPS办公功能全接触及应用示例
- 新型带储订盒订书机设计文档
- VB多媒体教学演示系统源代码及技术项目资源大全