内存管理
geshifei
这个作者很懒,什么都没留下…
展开
-
buddy找伙伴块算法(linux 3.10.102)
背景 本文描述内核找伙伴块的算法,根据给定order及page_idx(buddy块中第一个page的index),找到伙伴块的page_idx。如果需要查阅buddy的原理知识,请参考其他资料。 算法分析 内核找伙伴块的代码如下: mm/page_alloc.c /* * Locate the struct page for both the matching bud...原创 2018-08-21 20:50:19 · 1224 阅读 · 0 评论 -
vmalloc申请线性地址空间(linux 2.4.22)
参考《ULK》 p343,vmalloc线性地址区范围为VMALLOC_START~ VMALLOC_END(ULK中定义为非连续内存区),在Physicalmemory mapping的末尾与第一个vmalloc area之间插入一个8M的隔离区,目的是为了捕获对内存的越界访问。出于同样的理由,插入4KB大小的安全区来隔离非连续的内存区。内存布局见图1。 图1 线性地址空间区间 用户通过...原创 2018-07-06 14:49:58 · 514 阅读 · 0 评论 -
ARM中的linux页表与硬件页表(linux4.0)
背景: 在看内核代码初始化arm页表的时候,发现linux内核做了一些特殊处理,引入了硬件页表、linux页表的概念,这篇文章描述为何需要这样处理以及具体的实现方式。 原因: linux中ARM32采用2级页表映射方式,MMU映射过程如下: 图1 ARM MMU映射过程 从...原创 2019-04-26 18:51:41 · 2983 阅读 · 0 评论