全部博文(2759)
发布时间:2014-12-15 09:25:15
大多数情况,操作系统内核用纯C语言是写不了的,因为有些关键功能,重要代码段,还是得用汇编指令干上一把才行,本书不会过于详细的介绍ARM920T处理器所有的指令以及每条指令所有的详细使用方式。因为,一、篇幅所限,二、本书不是介绍某一特定处理器的指令集的专著。但是也不用害怕,笔者会尽量做到写操作系统内核时足够.........【阅读全文】
发布时间:2014-12-15 09:24:49
kernel 3.10内核源码分析--slab原理及相关代码
1、基本原理
我们知道,Linux保护模式下,采用分页机制,内核中物理内存使用buddy system(伙伴系统)进行管理,管理的内存单元大小为一页,也就是说使用buddy system分配内存最少需要分配一页大小。那如果需要分配小于一页的内存该怎么办呢?
另一方面,内核中经常需要大量的数据结构(比如struct task_strcut),这些数据结构的频繁分配和释放对性能影响较大。
Slab正是用于解决上述的两个问题, Slab 分配器源于 Solaris 2.4 的分配算法,工作于buddy system之上,用于管理特定大小对象的缓存,提高小块内存或特定对象内存分配效率。
Slab的两个用途如前面所述:1、缓存和管理内核中经常使用的数据结构对象,内核中使用slab提供的专用的接口,可以实现数据结构对象的快速分配,大大减少相关开销,提升效率。2、缓存和管理小块内存,也称通用缓存,用于kmalloc的底层实现和支撑。......【阅读全文】