自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 深入理解Linux 物理内存分配/释放过程(1)

在《深入理解Linux物理内存管理》《Linux 物理内存管理涉及的三大结构体之struct pglist》《Linux 物理内存管理涉及的三大结构体之struct zone》《Linux 物理内存管理涉及的三大结构体之struct page》中,给大家详细介绍了物理内存的三大模型:FLATMEM 平坦内存模型,DISCONTIGMEM 非连续内存模型和SPARSEMEM 稀疏内存模型。物理内存架构:一致性内存访问 UMA 架构和非一致性内存访问 NUMA 架构。

2023-08-05 19:13:00 755 3

转载 深入理解Linux物理内存管理

本文主要介绍Linux 物理内存管理,从物理内存模型,物理内存架构,物理管理三个角度,一步一步给大家做了系统详细的讲解。

2023-06-01 11:52:16 707

转载 深入理解Linux虚拟内存管理

类比快递的收货地址和真实地址位置,首先,收货地址是一个虚拟地址,它是人为定义的,而我们的城市,小区,街道是真实存在的,他们的地理位置就是物理地址。然后,我们切回计算机世界,在计算机里面,内存地址是用来定义数据在内存中存储位置的,内存地址也分为虚拟地址和物理地址。同样,这个虚拟地址也是人为定义的,类比我们现实世界的收货地址,而物理地址就是数据在物理内存中真实存储的位置,类比我们的城市,小区,街道的地理位置。说完定义后,现在开始讲一下虚拟内存地址到底长什么样。

2023-05-05 17:46:16 737 10

原创 Linux 物理内存管理涉及的三大结构体之struct pglist_data

总结一下,本文主要介绍kernel物理内存管理三大结构体里面顶端的结构体typedef struct pglist_data,对其里面的参数做了一一介绍。其中跟zone相关的参数,node物理内存PFN相关的参数,kswapd相关的参数,内存规整相关参数,跟LRU相关的参数和统计node内存信息参数vm_stat,在内核中使用频繁,相对重要。

2023-04-06 16:58:41 863

原创 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 1318

原创 Linux 物理内存管理涉及的三大结构体之struct page

本文主要详细的介绍了内存管理中三大结构体的struct page。将struct page里面的每个部分拆分出来,结合代码,对每个部分,每个成员变量尽力做到详细讲解。如果不对之处,请指正。最后想说的是:struct page结构的设计充分体现了内核设计人员为了减少内存占用的所做出的各种努力,且这种努力还在一直在继续。

2022-11-23 17:47:44 2303 1

原创 批量重命名文件夹和文件名bat脚本

批量重命名文件夹和文件名bat脚本

2022-10-25 15:40:38 3571

原创 linux kernel内存管理之/proc/meminfo下参数介绍

介绍了Linux系统了解内存状态的主要接口/proc/meminfo,主要包括:介绍跟该接口相关的函数;介绍该接口下各类型内存参数,涉及各个参数之间的关系;根据该接口总结的内存地图;最后浅述了一下内存黑洞,至于内存黑洞这块目前了解最多的是通过page_owner来监控,对于其他方式如有了解,会进行更新

2022-09-06 15:31:51 8742

原创 Linux kernel内存管理之OOM相关参数

本文首先讲述了OOM相关参数以及对应的代码模块的实现;最后详细讲解了发生OOM时,所调用的out_of_memory函数的代码实现。

2022-07-20 16:51:40 2835

原创 Linux kernel内存管理之overcommit相关参数

主要讲述了linux kernel内存管理中虚拟内存分配时会用到的overcommit相关参数,会通过该参数来判断用户进程的虚拟内存分配是否允许。

2022-06-30 16:37:52 1800

原创 slub allocator工作原理

slub allocator工作原理,包括相应slub数据结构,slub数据结构的联系。描述了slub分配内存原理和slub释放内存原理的流程框图,代码走读了常用的kmalloc和kfree函数。对于slub系统启动阶段的初始化,slub的创建以及slub的销毁在其他文章篇幅中有细讲.........

2022-06-27 11:37:43 928

原创 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 472

转载 多图详解CPU Cache Memory

今天探究的主题是cache。我们围绕几个问题展开。为什么需要cache?如何判断一个数据在cache中是否命中?cache的种类有哪些,区别是什么?

2022-06-08 19:25:26 810

原创 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 612

原创 SLUB内存管理的4个主要接口函数介绍(3)

本篇主要介绍slab object释放的函数kmem_cache_free

2022-05-26 10:52:33 3162

原创 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 1280

原创 SLUB内存管理的4个主要接口函数介绍(1)

2022-02-25 17:48:00 2281

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除