[linux内存管理] 第000篇 Linux内存管理系列开篇 11月前查看 评论
[linux内存管理] 第000篇 Linux内存管理系列开篇

本文为Linux内存管理系列文章的摘要总结。文章首先介绍了源码遵循的约定,包括芯片架构、内存架构、内核版本等信息。接着概述了内存管理的一些预备知识,包括内存与内存管理机制、页表查询过程、内存分布等。文章详细分析了物理内存初始化流程,包括启动代码分析、start_kernel全局简述、fixmap映射、memblock子系统等。此外,文章还介绍了各种内存分配器(如buddy分配器、percpu分配器、CMA分配器等)和内存管理相关概念(如缺页异常处理、memcg、PSI等)。最后,列出了文章中涉及的专业术语及其解释。

[linux内存管理] 第029篇 谁把folio的函数定义“藏”起来了? 2月前查看 3 条
[linux内存管理] 第029篇 谁把folio的函数定义“藏”起来了?

这篇文章探讨了在阅读Linux内核代码时,如何解决一些函数定义难以找到的问题。作者遇到了folio_test_active()等函数无法找到定义的困惑,通过搜索发现这些函数是通过特殊的宏定义在page-flags.h文件中创建的。文章详细解释了PAGE_TYPE_OPS()和FOLIO_FLAG()宏的工作原理,以及如何通过这些宏定义函数。最终,作者成功理解了这些函数的定义方式,并总结说这种方法虽然特殊,但探索和理解的过程非常有意思。

[linux内存管理] 第028篇 do_anonymous_page只处理私有映射吗? 2月前查看 1 条
[linux内存管理] 第028篇 do_anonymous_page只处理私有映射吗?

文章摘要:本文探讨了Linux内核中do_anonymous_page()函数的作用,解释了它为什么只处理私有匿名映射。通过分析do_pte_missing()、vma_is_anonymous()、vma_set_anonymous()等函数,以及mmap_region()函数中的逻辑,文章得出结论:在mmap()流程中,只有私有匿名映射的vm_ops会被设置为NULL,从而被do_anonymous_page()处理。其他类型的映射,如共享匿名映射和文件映射,其vm_ops不为空,因此不会被该函数处理。

[linux内存管理] 第001篇 内存与内存管理机制 11月前查看 评论
[linux内存管理] 第001篇 内存与内存管理机制

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

[linux内存管理] 第002篇 页表查询过程简述 11月前查看 评论
[linux内存管理] 第002篇 页表查询过程简述

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