Linux系统启动后内存使用分析详解
需积分: 29 181 浏览量
更新于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负责将物理地址映射到虚拟地址,以便进程可以访问内存。
121 浏览量
164 浏览量
102 浏览量
133 浏览量
2023-12-26 上传
189 浏览量
2021-05-08 上传
307 浏览量
xiaochubing20023
- 粉丝: 6
- 资源: 19
最新资源
- elasticsearch-analysis-ik-6.4.3.rar
- 4_dtsled_设备树驱动例程_
- SteamVR插件.rar
- HelloJava:一些java例子,希望对以后有帮助
- 网件A6100-V1.0.0.36驱动
- 【ssm项目源码】文档管理系统.zip
- clase_1_2021
- 使应用程序源不可知
- coffesploit:coffesploit是一个自动渗透测试框架
- driwwwle:Dribbble,但适用于Web开发人员。 与世界共享您的Web项目的门户
- WebSite2_数据稽核统计_
- DOTween Pro 1.0.zip
- MyTitlePageIndicatorDemo
- tc3kb_v500_upgrade TC3000B仪器固件
- 构建环境传播者插件
- sultan-spring