内核Linux 内核中的 Kset(linuxkset)
和 Kobject
Linux内核是一个开源的操作系统内核,它由Linus Torvalds 1991年发布并由社区维护。目前,它是跨所有UNIX变体最受欢迎的内核,并且被广泛应用于移动设备,桌面和服务器。
Linux内核的架构围绕着模块化的设计,可以被编译及调试以满足特定平台的要求。其中,Kset和Kobject两个概念对于理解Linux内核非常重要。
Kset是存储支持的Kobject的集合。它的定义如下:
“`struct kset {
spinlock_t list_lock;
struct list_head list;
struct kobject kobj;
const struct kset_ueue *u;
};
它表示一组所有Kobject的动态列表,通常是一个专有设备或一组模块中Kobject,而Kobject则用来描述系统中可能存在的对象。
Kobject是一种基本对象,它提供了Linux特定平台的对象形式,例如字符设备,块设备,卷管理和文件系统。它的定义如下:```struct kobject {
const char *name; struct list_head entry;
struct kobject *parent; struct kset *kset;
struct kobj_type *ktype; struct kernfs_node *kf_node;
};
它实现了Linux系统中的对象识别,分类,访问控制等任务,从而使Linux内核开发更加高效和多样。
从上可见Kset和Kobject在Linux内核中有着关键性的作用,它们支撑着Linux系统中的对象识别和访问控制。因此,理解Kset和Kobject对于更好地掌握Linux内核构架非常重要。