
内存
文章平均质量分 91
hello_yj
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Linux Mem -- Slub内存分配器基础
本文深入剖析了Linux内核中的SLUB内存分配器,主要内容包括:1. SLUB的设计背景,作为SLAB/SLOB的优化版本,解决了小内存分配效率和碎片化问题;2. 核心数据结构剖析,包括kmem_cache、kmem_cache_cpu、kmem_cache_node和slab结构体;3. 初始化流程详解,分为kmem_cache基础变量初始化、kmalloc_caches数组构建和系统机制注册三个阶段;4. 内存分配与释放机制,重点分析了快速/慢速分配路径和不同状态slab的处理策略;5. 调试手段,包原创 2025-07-02 21:55:36 · 929 阅读 · 0 评论 -
Linux Mem -- Slub内存分配器的几点疑问及解答(2)
摘要:本文深入探讨Linux内核SLUB内存管理机制的核心问题。分析了kmem_cache_cpu中slab与freelist的关系,指出slub最大可分配连续内存空间为8KB,超出则使用page allocator。详细阐述了shrink和merge两种管理策略的实现及其触发条件。解答了对象释放时的归属判断、跨Node分配策略等问题,并探讨了kmem_cache中slab的状态管理、数据结构分布和初始化过程。最后说明已分配对象不在freelist中,以及slab在各级链表间的转移机制。原创 2025-06-04 08:35:41 · 895 阅读 · 0 评论 -
Linux Mem -- 通过reserved-memory缩减内存
本文是解决具体的一些思考总结,和Linux内核的reserved-memory机制相关。参考代码:Linux-6.10。原创 2025-03-29 22:08:45 · 1176 阅读 · 0 评论 -
Linux内存 -- 内核空间物理与虚拟地址转换
内核启动过程中完成临时的内核空间页表创建后,就可以实现内核空间物理地址与对应虚拟地址间的相互转化,该转化过程可以通过__phys_to_kimg 、__kimg_to_phys实现原创 2022-10-21 19:17:19 · 1841 阅读 · 0 评论 -
Linux内存 -- 启动过程的临时页表创建
页表用时实现内存物理地址到虚拟地址的映射,实现虚拟地址到物理的转化;是虚、实内存地址转化的媒介。页表,是由物理地址向虚拟地址映射时创建的,由软件代码逻辑进行实现;虚拟地址向物理地址的转化需要借助MMU硬件单元实现原创 2022-10-14 20:13:45 · 2053 阅读 · 0 评论 -
Linux Mem -- 关于AArch64 MTE功能的疑问
前面几篇文章是在介绍为什么需要MTE功能、MTE功能逻辑和硬件实现。从这篇文件起,结合之前MTE逻辑和硬件实现,开始介绍MTE功能在软件中的实现。首先我要通过调查推理回答自己的几个问题。原创 2025-02-28 22:44:58 · 881 阅读 · 0 评论 -
Linux内存 -- Fixmap映射固定虚拟地址
继上文介绍内核在启动初期为内核段建立了临时映射页表,实现了内核物理地址到虚拟地址的映射;该映射完成后可以通过虚拟地址访问内核空间,但此段仅限于内核段的访问,内核之外的内存空间还不能使用虚拟地址进行访问,需要继续完成内存空间外的内存映射。要实现其他内存空间的映射就需要从fdt中解析系统的内存情况,要访问fdt就要先实现fdt的映射,即要引出本章的介绍的主角fixmap。原创 2022-10-29 15:55:16 · 994 阅读 · 0 评论 -
Linux Mem -- AArch64 MTE功能Tag寄存器
如前文提到为了将memory tag保存到内存,需要对MTSX中的tag相关寄存器进行编程,以保证MTSX能够根据请求的物理地址来决定tag地址。本文参考。原创 2025-02-14 19:30:00 · 863 阅读 · 0 评论 -
Linux Mem -- Slub内存分配器的几点疑问及解答
近期在解读Linux slub内存分配管理器相关代码,随着代码的不断深入会不断地自我提出新的疑问点,自己带着疑问又再次走查代码解答自我的疑问。这篇便是对于解读Slub内存时的自我疑问解。原创 2025-03-29 20:44:06 · 1090 阅读 · 0 评论