[linux内存管理] 第009篇 reserved-memory详解 2024-11-29 评论
[linux内存管理] 第009篇 reserved-memory详解

随着内核运行,物理内存碎片化问题会影响设备使用。为此,内核提供 reserved memory 机制,为特定设备预留内存,提高内存利用率。本文分析了 reserved memory 的配置和解析过程,包括 DTS 中的属性、静态/动态预留、no-map 和 reusable 等概念。内核解析 reserved memory 节点时,会根据属性值确定内存的 base 和 size,并进行相应的初始化操作。CMA 是一种特殊的 reserved memory,需要编写驱动程序进行初始化。

[linux内存管理] 第007篇 fixmap映射详解 2024-11-27 评论
[linux内存管理] 第007篇 fixmap映射详解

您好,以下是对您提供的文章内容的100字左右摘要总结: 文章主要介绍了Linux内核中fixmap的概念、作用和实现。fixmap是内核预留的一段虚拟内存空间,用于早期固定映射,包括fdt、console、外设动态映射和paging_init()等。文章详细分析了fixmap的分布、初始化过程以及与设备树(dtb)的关系。fixmap的初始化涉及pgd、pud、pte等页表的创建和映射,而设备树dtb的映射则通过fixmap_remap_fdt()函数实现。此外,文章还介绍了early_ioremap_init()和setup_machine_fdt()等函数的作用,以及FDT调试方法。

linux内存管理] 第006篇 start_kernel全局简述 2024-11-27 评论
linux内存管理] 第006篇 start_kernel全局简述

本文简要介绍了Linux内核启动过程中`start_kernel`函数的内存管理代码流程。文章首先概述了`start_kernel`的功能,然后详细解析了其中的`setup_arch`函数及其关键步骤,包括内存映射、设备树解析、页表建立等。接着,文章总结了`bootmem_init`函数的初始化流程,涉及物理内存的页帧号确定、sparse内存模型的初始化以及内存区域的标记等。整体而言,文章提供了Linux内存管理初始化过程的清晰概述。

[linux内存管理] 第005篇 启动代码分析之汇编部分 2024-11-26 评论
[linux内存管理] 第005篇 启动代码分析之汇编部分

本文详细分析了Linux内核启动阶段的引导程序、内核起始地址、head.S、内存映射和__cpu_setup函数。引导程序负责初始化物理内存、设置设备树、解压缩内核映像并将其加载到内核运行地址,然后跳转到内核入口地址。内核起始地址在arch/arm64/kernel/vmlinux.lds.S文件中定义,并使用readelf工具读取vmlinux文件进行验证。head.S文件包含内核启动汇编代码,主要完成切换到EL1模式、创建恒等映射页表、为打开MMU做处理器相关初始化、启动MMU并跳转到start_kernel()函数等任务。内存映射部分分析了恒等映射和粗粒度内核镜像映射的原理和实现,以及map_memory宏、compute_indices宏和populate_entries宏的作用。__cpu_setup函数负责为打开MMU做一些处理器相关初始化,包括清除本地TLB、启用FP/ASIMD、设置TCR寄存器、设置SCTLR_EL1寄存器等。__primary_switch函数启动MMU,并跳转到start_kernel()函数进入内核的C语言部分。

[linux内存管理] 第001篇 内存与内存管理机制 2024-11-25 评论
[linux内存管理] 第001篇 内存与内存管理机制

**内存管理**是操作系统核心功能之一,经历了从纸带存储到现代内存管理机制的演变。内存,作为数据货架,以字节为单位存储数据,并通过内存地址进行编号。内存类型包括RAM、ROM、闪存和虚拟内存等。RAM分为SRAM和DRAM,SRAM速度快但成本高,DRAM容量大且成本低。内存分段机制将程序内存空间划分为多个逻辑分段,解决了地址空间保护问题,但内存使用效率低。内存分页机制将内存划分为固定大小的页面,提高了内存使用效率。MMU负责将虚拟页面映射到物理页面,实现内存管理机制。

[linux内存管理] 第002篇 页表查询过程简述 2024-11-25 评论
[linux内存管理] 第002篇 页表查询过程简述

您好,我已根据您提供的文档内容,完成了对内存管理单元(MMU)、页表(PT)、页表项(PTE)、转换后备缓冲器(TLB)等概念的总结,并对ARMv8处理器中的分页管理原理进行了阐述。同时,我还对Linux内核中关于页表操作的API进行了简要分析,包括PGD、PUD、PMD的划分,以及页表设置相关的宏定义。如果您需要更详细的源码分析或有其他问题,请随时告诉我。

基于hexo+vercel零成本搭建博客网站 2024-11-22 评论
基于hexo+vercel零成本搭建博客网站

搭建个人博客网站是数字时代展示个人才华和分享知识的重要方式。本文介绍了选择Hexo框架和Vercel平台零成本搭建博客的原因及具体步骤。首先阐述了拥有博客网站的意义,然后详细说明了安装Hexo和部署到GitHub的流程,最后讲解了如何利用Vercel进行网站上线。文章简洁明了,为初学者提供了清晰的建站指导。

Android编译原理之make编译过程 2024-11-22 评论
Android编译原理之make编译过程

本文介绍了Android系统编译过程中make指令的使用,并以高通代码为例,详细解析了编译指令的执行流程。文章指出,make指令实质是对make的封装,通过调用build/soong/soong_ui.bash文件进行编译。接着,文章详细解析了soong_ui.bash的执行流程,包括获取make命令、编译soong_ui、执行make命令等步骤。最后,文章深入分析了build.go文件的执行流程,包括配置编译参数、编译工具、生成ninja文件、执行编译过程等步骤。