浅析Kernel中的cache机制
内核中的各个子系统都有cache的身影,这篇文章尝试分析一下常用的子系统中所使用的cache机制及实现.
首先,来看一下slab cache: Android 2.X系列的kernel里默认使用的slab allocation.
slab cache的思想最初由Jeff Bonwick早Sun OS中诞生(可敬的SUN, 可悲的SUN, 总是看到一些技术最初来自于它,就跟我经常看到一些技术来自与IBM一样).它的关键理念是提供了一些经常被使用的object, 这些object只需要被初始化一次,可以被系统多次使用.这样就节省了各种初始化的时间及分配它们的时间.尤其对系统中经常需要用到的一些小的object,比如mutex. Linux内核中按大小提供了一系列的slab cache来给不同的场景使用,它们被使用一个list管理起来. 关键的kmem_cache的结构可以在源码处slab_def.h中找到.