kernel-mem
Kernel - Page Frame 回收
· ☕ 3 åˆ†é’Ÿ
Page Frame 回收 之前我们了解到,Linux 倾向用最多的内存做 Page Cache。这使我们不得不考虑如何在内存不足前回收内存。问题是,回收内存的程序本身也可

Kernel - 内存寻址
· ☕ 1 åˆ†é’Ÿ
CPU Cache Cache 有两种写策略: write-through:同步写 Cache 和 Main Memory write-back:不同步写 Main Memory,直到CPU发出 flush 指令,或收到了 FLUSH

Kernel - Memory Area
· ☕ 1 åˆ†é’Ÿ
Memory Area Management 使用 buddy system algorithm来分配大块内存是合理的,但小块内存就会做成空间浪费。 Slab Allocator 在 buddy system algorithm之上做一个内存分配算法会很低

Kernel - 进程内存地址
· ☕ 4 åˆ†é’Ÿ
进程内存地址 通过之前的内容,我们学习到内核通过: _get_free_pages( ) 或 alloc_pages() 从zoned page frame allocator 中分配内存。 kmem_cache_alloc( ) 或 kmalloc( ) 分配小块的数据结构空间 vmalloc( ) 或 vmalloc_32() 分配不连续的空

Kernel -Page Frame Management
· ☕ 2 åˆ†é’Ÿ
Page Frame Management Page Descriptors 一些地址的转换: 宏 virt_to_page(addr) :输入一个线性的虚拟地址,返回相关的 Page Descriptor 宏 pfn_to_page(pfn) :输入一个 page frame 的 number pfn,返回相关的 Page Descriptor page descriptor 的数据结构: 图出处:U