活动地址:CSDN21天学习挑战赛
学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您:
想系统/深入学习某技术知识点…
一个人摸索学习很难坚持,想组团高效学习…
想写博客但无从下手,急需写作干货注入能量…
热爱写作,愿意让自己成为更好的人…
众所周知,Linux的特色就是一切皆文件,即各种设备在Linux系统下的表现方式是以文件的方式展现,如下图:
Linux的设备驱动管理即是设备(devices)、总线(bus)和驱动(driver)的联合管理。
总线(bus):负责管理挂载对应总线的设备以及驱动;
设备(devices):挂载在某个总线的物理设备;
驱动(driver):这里是指的设备驱动,与特定设备相关的软件,负责初始化该设备以及提供一些操作该设备的操作方式;
类(class):对于具有相同功能(或者某一共同类型)的设备,归结到一种类别,进行分类管理;
如下图示:
kobject是组成设备模型的基本结构,它使得所有的设备在底层都有统一的接口。从面向对象的角度看。kobject可认为是最底层的一个基类,后续的bus_type、devices、device_driver都是它的子类。每一个在内核中注册的kobject对象都对应于sysfs文件系统中的一个目录。如图:
kobject和kset是构成/sys目录下的目录节点和文件节点的核心,也是层次化组织总线、设备和驱动的核心数据结构,kobject、kset数据结构都能表示一个目录或者文件节点。
kset不仅仅自己也包含kobject结构也还能挂载多个kobject,kset是kobject的集合容器。