Linux内核深入分析

95 篇文章
24 人订阅

全部文章

DragonKingZhu

page compaction原理

如果你的ubuntu机器经过长时间运行,比如1个月没关机,这时候你去看buddinfo和pagetypeinfo的信息。

7620
DragonKingZhu

SLUB的引入及举例说明

我们都知道Buddy分配器是按照页的单位分配的(Buddy系统分配器实现),如果我们需要分配几十个字节,几百个字节的时候,就需要用到SLAB分配器。

8510
DragonKingZhu

page compaction代码分析之一

那怎么确定到底是什么原因导致分配失败的,所以就出现了碎片指数。取值范围[0 1000]

9020
DragonKingZhu

SLUB分配一个object的流程分析

在上一节 我们清晰的知道了当调用kmem_cache_create之后系统会为我们分配一个名为slub_test的一个slab。这时候只是分配了kmem_cac...

7410
DragonKingZhu

SLUB结构体创建及创建slab分析

在上一篇文章中我们通过一个简单的例子大概描述了如何创建SLUB缓存,如何分配一个object。本文详细描述下涉及的结构体,从结构体的描述中就可以大概理解slub...

11210
DragonKingZhu

Kmalloc申请内存源码分析

再上一节了解了SLUB是如何申请一个object的,其中涉及了从当前的freelist申请,以及kmem_cache_cpu->partital链表申请,以及到...

11820
DragonKingZhu

学习ARM64页表转换流程

在引入虚拟地址概念以后,程序员和CPU看到的都是虚拟地址。当CPU尝试去访问某个虚拟地址的时候,这时候硬件单元MMU就会将此虚拟地址转化为物理地址,然后CPU再...

15120
DragonKingZhu

分析匿名页(anonymous_page)映射

接着上一次malloc(探秘malloc是如何申请内存的)的dump信息继续分析。

8710
DragonKingZhu

手动玩转虚拟地址到物理地址转化

我们这次来根据dump动手来实际转化一个虚拟地址到物理地址,此次的地址不是线性地址映射。

8420
DragonKingZhu

zone watermark水位控制

本节我们来分析下zone的水位控制,在zone那一节中,我们将重点放在了free_area中,故意没有分析zone中的水位控制,本节在重点分析zone中的水位控...

9920
DragonKingZhu

快车道-分配页

6510
DragonKingZhu

从备用类型总盗用steal page

在之前的文章中,当分配一页的时候从对应order的对应的迁移类型中freelist中分配一个空闲的页。但是也会出现此order的迁移类型中没有可用的page,这...

6310
DragonKingZhu

Buddy分配器之释放一页

在上面一节我们讲述了buddy分配器是如何分配一页的,本节我们在学习buddy分配器是如何释放一页的

8120
DragonKingZhu

Buddy(伙伴)系统分配器之分配page

Buddy分配器是按照页为单位分配和释放物理内存的,在Zone那一节文章中freearea就是通过buddy分配器来管理的。

7810
DragonKingZhu

物理内存是如何组织管理的

内存管理,相比大家都听过。但是内存管理到底是做什么呢?这就得从计算机刚出来的时候说起。计算机刚出来的时候内存资源很紧张,只有几十K,后来慢慢的到几百K,到周后来...

7710
DragonKingZhu

物理内存管理之zone详解

上一次说过了物理内存由node,zone,page三级结构来描述。而node是根据当前的系统是NUMA还是UMA系统。假设我们当前是UMA系统架构,则只有一个n...

13810
DragonKingZhu

VMA实战操练

在上篇文章根据crash学习用户空间程序内存布局涉及到了VMA的相关操作,本节通过一个简单的实例来深刻的学习下VMA是什么,以及VMA是如何组织的。

7910
DragonKingZhu

根据crash学习用户空间程序内存布局

在32位机器上,总共有4G大小的虚拟地址空间,其中0-3G是给应用程序使用,3-4G是给内核使用。

8720
DragonKingZhu

根据crash学习ARM64虚拟地址空间布局

可以看到出错提示是:Unable to hanle kernel paging requeset at virtual address ffffdfc7be9c...

10220
DragonKingZhu

ARMv8-A Exception Handling

当设备正在愉快的执行时候,此时发生了一个异常,处理器就必须暂停当前的任务,转而去处理发生的异常。当异常处理完毕后,处理就会发回到被打断的程序继续执行。

13940

扫码关注云+社区

领取腾讯云代金券