《第一章》简介和概述
实现策略:微内核、宏内核
命名空间:全局资源具有不同的分组
由于被中断的进程与中断原因没有什么关系,因此内核无权访问被中断进程用户空间的内容。
页表
虚拟地址的分割:
页表的一个特色在于:对虚拟地址空间中不需要的区域,不必创建中间页目录或者页表,与直接使用一级页表数组的方式相比,节省了大量的内存。
加速转换:1.MMU硬件支持,2.TLB硬件缓存(有些架构下TLB运转透明,有些需要内核专门处理)
内存映射:内存映射是一种重要的抽象手段,可以将任意来源的数据传输到进程的虚拟地址空间,映射到的这部分虚拟地址空间可以像内存一样被操作,其上的修改会被内核自动传输到数据源。这样就可以使用相同的函数处理不同的目标对象。
物理内存分配
伙伴系统:
伙伴系统一定程度上可以减少碎片,但不能完全消除。
slab缓存:
内核经常需要比一个页帧小得多的一块内存。内核使用slab机制。
伙伴系统、slab缓存、内核其他部分的联系:
系统调用分类:
进程管理、信号、文件、目录和文件系统、保护机制、定时器函数。
VFS:
对象管理和引用计数:
内核采用了一般性的方法来管理(例如引用计数)内核对象。管理操作包括 引用计数、管理对象链表、集合加锁、将对象属性导出到用户空间(via sysfs)。
struct kobject {
constchar * k_name;
struct kref kref;
struct list_head entry;
struct kobject * parent;
struct kset * kset;
struct kobj_type * ktype;
struct sysfs_dirent * sd;
};
将kobject嵌入到其他数据结构中
struct sample {
… …
struct kobject kobj;
… …
};