![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux内存管理
文章平均质量分 90
Realdagongzai
打工人,打工魂
展开
-
深入理解Linux 物理内存分配/释放过程(1)
在《深入理解Linux物理内存管理》《Linux 物理内存管理涉及的三大结构体之struct pglist》《Linux 物理内存管理涉及的三大结构体之struct zone》《Linux 物理内存管理涉及的三大结构体之struct page》中,给大家详细介绍了物理内存的三大模型:FLATMEM 平坦内存模型,DISCONTIGMEM 非连续内存模型和SPARSEMEM 稀疏内存模型。物理内存架构:一致性内存访问 UMA 架构和非一致性内存访问 NUMA 架构。原创 2023-08-05 19:13:00 · 927 阅读 · 3 评论 -
深入理解Linux物理内存管理
本文主要介绍Linux 物理内存管理,从物理内存模型,物理内存架构,物理管理三个角度,一步一步给大家做了系统详细的讲解。转载 2023-06-01 11:52:16 · 802 阅读 · 0 评论 -
深入理解Linux虚拟内存管理
类比快递的收货地址和真实地址位置,首先,收货地址是一个虚拟地址,它是人为定义的,而我们的城市,小区,街道是真实存在的,他们的地理位置就是物理地址。然后,我们切回计算机世界,在计算机里面,内存地址是用来定义数据在内存中存储位置的,内存地址也分为虚拟地址和物理地址。同样,这个虚拟地址也是人为定义的,类比我们现实世界的收货地址,而物理地址就是数据在物理内存中真实存储的位置,类比我们的城市,小区,街道的地理位置。说完定义后,现在开始讲一下虚拟内存地址到底长什么样。转载 2023-05-05 17:46:16 · 823 阅读 · 10 评论 -
Linux 物理内存管理涉及的三大结构体之struct pglist_data
总结一下,本文主要介绍kernel物理内存管理三大结构体里面顶端的结构体typedef struct pglist_data,对其里面的参数做了一一介绍。其中跟zone相关的参数,node物理内存PFN相关的参数,kswapd相关的参数,内存规整相关参数,跟LRU相关的参数和统计node内存信息参数vm_stat,在内核中使用频繁,相对重要。原创 2023-04-06 16:58:41 · 1059 阅读 · 0 评论 -
Linux 物理内存管理涉及的三大结构体之struct zone
本文主要介绍了内存管理三大结构体中的struct zone结构体。详细介绍了其中的每个参数的含义。其中这些参数:_watermark[],lowmem_reserve[],pageset,lock,vm_stat[],free_area[]和内存规整系列参数是相对重要。在日常中经常能够遇到。如free_area[]是struct zone的核心,也是buddy system的核心结构;vm_stat[]统计了该zone的内存使用情况;内存规整参数在内存规整/压缩中有重要作用。原创 2023-03-13 15:47:58 · 1565 阅读 · 0 评论 -
Linux 物理内存管理涉及的三大结构体之struct page
本文主要详细的介绍了内存管理中三大结构体的struct page。将struct page里面的每个部分拆分出来,结合代码,对每个部分,每个成员变量尽力做到详细讲解。如果不对之处,请指正。最后想说的是:struct page结构的设计充分体现了内核设计人员为了减少内存占用的所做出的各种努力,且这种努力还在一直在继续。原创 2022-11-23 17:47:44 · 2707 阅读 · 1 评论 -
linux kernel内存管理之/proc/meminfo下参数介绍
介绍了Linux系统了解内存状态的主要接口/proc/meminfo,主要包括:介绍跟该接口相关的函数;介绍该接口下各类型内存参数,涉及各个参数之间的关系;根据该接口总结的内存地图;最后浅述了一下内存黑洞,至于内存黑洞这块目前了解最多的是通过page_owner来监控,对于其他方式如有了解,会进行更新原创 2022-09-06 15:31:51 · 9534 阅读 · 0 评论 -
Linux kernel内存管理之OOM相关参数
本文首先讲述了OOM相关参数以及对应的代码模块的实现;最后详细讲解了发生OOM时,所调用的out_of_memory函数的代码实现。原创 2022-07-20 16:51:40 · 3131 阅读 · 0 评论 -
Linux kernel内存管理之overcommit相关参数
主要讲述了linux kernel内存管理中虚拟内存分配时会用到的overcommit相关参数,会通过该参数来判断用户进程的虚拟内存分配是否允许。原创 2022-06-30 16:37:52 · 1940 阅读 · 0 评论 -
slub allocator工作原理
slub allocator工作原理,包括相应slub数据结构,slub数据结构的联系。描述了slub分配内存原理和slub释放内存原理的流程框图,代码走读了常用的kmalloc和kfree函数。对于slub系统启动阶段的初始化,slub的创建以及slub的销毁在其他文章篇幅中有细讲.........原创 2022-06-27 11:37:43 · 1012 阅读 · 0 评论 -
SLUB内存管理之slub初始化
在讲slub内存管理涉及的四个函数之前,先从slub内存分配算法的初始化开始。系统启动时,会进行slub内存分配算法的初始化,函数流程是:start_kernel() -> mm_init()->kmem_cache_init()。完成kmem_cache_node、kmem_cache、kmalloc_caches三个slab cache管理结构的初始化,对于内核中其他的slab cache的创建通过kmem_cache_create()函数完成。.........原创 2022-06-19 15:58:07 · 503 阅读 · 0 评论 -
SLUB内存管理的4个主要接口函数介绍(3)
本篇主要介绍slab object释放的函数kmem_cache_free原创 2022-05-26 10:52:33 · 3228 阅读 · 0 评论 -
SLUB内存管理的4个主要接口函数介绍(2)
slub内存管理的4个主要接口函数如下(参考kernel-4.19代码)://slab缓存的创建struct kmem_cache *kmem_cache_create(const char *name, size_t size, size_t align, unsigned long flags, void (*ctor)(void *));//slab object的分配void *kmem_cache_alloc(struct kmem_cache *cachep, int......原创 2022-04-19 17:00:31 · 1387 阅读 · 0 评论 -
SLUB内存管理的4个主要接口函数介绍(1)
无原创 2022-02-25 17:48:00 · 2344 阅读 · 0 评论 -
SLUB内存管理的4个主要接口函数介绍(4)
本篇主要介绍slab 缓存释放的函数kmem_cache_destroy,核心函数是shutdown_memcg_caches和shutdown_cache,分别释放销毁kmem_cache* s名下所属的memcg对应的children kmem cache和s本身。其中shutdown_cache函数里面涉及释放被kasan隔离延迟释放的obj,释放kmem_cache_cpu管理的缓存区空间和释放node partial上管理的空间。...原创 2022-06-07 16:43:03 · 652 阅读 · 0 评论