标签: linux-kernel
我正在研究内核内存分配器的工作原理(SLAB和SLUB)。为了欺骗它们,我需要通过用户域程序调用内核内存分配。
显而易见的方法是调用syscall.fork(),它将生成流程实例,内核必须维护PCB结构,这需要相当大的内存空间。
然后我出去了。我不会将我的实验限制为仅调用fork()并使用Systemtap跟踪它们。任何其他方便的方法来做类似的,但可能需要具有各种功能的内核对象(proc_t除外)(其中最重要的是:它们的大小)?
感谢。
答案 0 :(得分:2)
SLUB只是管理缓存对象的一种有效方式(与SLAB相比)。它或多或少是一回事。您可以阅读here为什么引入SLUB和this链接谈论究竟什么是slab分配器。现在开始跟踪内核中究竟发生了什么以及如何跟踪它:
SLUB
SLAB
kmem_cache_create()
kgdb