linux 2.6内核的设备模型
linux 2.6内核的一个重要特色是提供了统一的内核设备模型。随着技术的不断进步,系统的拓扑结构越来越复杂,对智能电源管理、热插拔以及plug and play的支持要求也越来越高,2.4内核已经难以满足这些需求。为适应这种形势的需要,2.6内核开发了全新的设备模型。
1. sysfs文件系统
sysfs文件系统是一个类似于proc文件系统的特殊文件系统,用于将系统中的设备组织成层次结构,并向用户模式程序提供详细的内核数据结构信息。其顶层目录主要有:
block目录:包含所有的块设备
devices目录:包含系统所有的设备,并根据设备挂接的总线类型组织成层次结构
bus目录:包含系统中所有的总线类型
drivers目录:包括内核中所有已注册的设备驱动程序
class目录:系统中的设备类型(如网卡设备,声卡设备等)
2. 内核对象机制关键数据结构
2.1 kobject内核对象
kobject是linux 2.6引入的新的设备管理机制,在内核中由struct kobject表示。通过这个数据结构使所有设备在底层都具有统一的接口,kobject提供基本的对象管理,是构成linux 2.6设备模型的核心结构,它与sysfs文件系统紧密关联,每个在内核中注册的kobject对象都对应于sysfs文件系统中的一个目录。
kobject结构定义为:
struct kobject {
char * k_name; 指向设备名称的指针
char name[kobj_name_len]; 设备名称
struct kref kref; 对象引用计数
struct list_head entry; 挂接到所在kset中去的单元
struct kobject * parent; 指向父对象的指针
struct kset * kset; 所属kset的指针
struct kobj_type * ktype; 指向其对象类型描述符的指针
struct dentry * dentry; sysfs文件系统中与该对象对应的文件节点路径指针
};
其中的kref域表示该对象引用的计数,内核通过kref实现对象引用计数管理,内核提供两个函数kobject_get()、kobject_put()分别用于增加和减少引用计数,当引用计数为0时,所有该对象使用的资源将被释放。
ktype域是一个指向kobj_type结构的指针,表示该对象的类型。kobj_type数据结构包含三个域:一个release方法用于释放kobject占用的资源;一个sysfs_ops指针指向sysfs操作表和一个sysfs文件系统缺省属性列表。sysfs操作表包括两个函数store()和show()。当用户态读取属性时,show()函数被调用,该函数编码指定属性值存入buffer中返回给用户态;而store()函数用于存储用户态传入的属性值。
2.2 kset内核对象集合
kobject通常通过kset组织成层次化的结构,kset是具有相同类型的kobject的集合,在内核中用kset数据结构表示,定义为:
struct kset {
struct subsystem * subsys; 所在的subsystem的指针
struct kobj_type * ktype; 指向该kset对象类型描述符的指针
struct list_head list; 用于连接该kset中所有kobject的链表头
struct kobject kobj; 嵌入的kobject
struct kset_hotplug_ops * hotplug_ops; 指向热插拔操作表的指针
};
包含在kset中的所有kobject被组织成一个双向循环链表,list域正是该链表的头。ktype域指向一个kobj_type结构,被该 kset中的所有kobject共享,表示这些对象的类型。kset数据结构还内嵌了一个kobject对象(由kobj域表示),所有属于这个kset的kobject对象的parent域均指向这个内嵌的对象。此外,kset还依赖于kobj维护引用计数:kset的引用计数实际上就是内嵌的kobject对象的引用计数。
DSC在淀粉糊化的方面的应用案例
高精度肥料养分速测仪的产品介绍
激光雷达技术的创新将如何影响细分市场
将卫星送入轨道的两种主要方法
阻抗匹配滤波器电路设计——LC、L和PI滤波器
Linux 2.6内核的设备模型
易云系统全功能版本满足用户基本物联网需求
华为正与英国四大电信公司合作,保证移动和宽带网络的正常运行
新能源汽车发展方兴未艾,纯电动汽车是未来发展方向
ios10.3最新消息:ios10.3自曝新增十大功能,升级ios10.3后出现发热可以这样来解决
区块链技术和分布式总账技术有哪些共同的特点
WorkVisual中的安全配置范围包括哪些呢
分析:唯冠科技竟能向苹果索价600亿?
WiBotic 为无人机和机器人提供新型基于 GaN 的充电器和发射器
利用废旧电路板(TDA1013)制作廉价音响,TDA1013 amplifier
六旗新推出超刺激VR新主题“夜行神龙”过山车项目
1.5T省油、2.0T超强、20万买这款合资福特翼虎2017款EcoBoost245四驱尊翼型SUV最合算
FP6276B 500 kHz 5A高效同步PWM增压转换器芯片
走进新一代WiFi标准——WiFi6
加快AI领域研究生培养 可以缩短我国与发达国家在人工智能方面的差距