Archive for January, 2014

2014/01/02

如果你稍微了解过Linux内核的内存管理,那么对内存分区的概念一定不陌生,Linux内核把物理内存分成了3个区, 0 – 16M 为ZONE_DMA区, 16M – 896M 为ZONE_NORMAL区, 高于896M 为ZONE_HIGHMEM区 我没有去考证过为什么要取896这个数字,但是可以肯定的是这样的划分在当时看来是合理的,然而计算机行业的发展今非昔比,现在4G的物理内存已经成为PC的标配了,CPU也进入了64位时代,很多事情都发生着改变。

15,048 views
2014/01/01

貌似2013年写的技术文章只有个位数,实在是不应该啊! 最近几天看了些Linux Kernel的内存管理,就写点东西吧。 我们知道Linux内核内存管理最底层的是伙伴系统,伙伴系统解决是的内存外碎片问题,而不能解决内碎片问题,因此在伙伴系统之上,有Slub/Slab/Slob 三种内存分配策略(有的书上叫高速缓存,我个人很不喜欢这个名字,因为很容易与硬件的高速缓存TLB混淆),不过内核同时只能使用这三种中的一种,Slub 是现在内核默认的选项,无论是我们安装在自己电脑上的Linux系统,还是运行在服务器上的系统,都是用的Slub; Slab 作为鼻祖曾经辉煌一时,现在退居二线了; Slob 则是主要用于内存非常小的嵌入式系统,只有在编译内核的时候配置了 Embedded System 选项,才可以选择使用Slob。

14,073 views