现在的位置: 首页 > 综合 > 正文

Linux2.6.29设备模型分析-概述

2013年10月25日 ⁄ 综合 ⁄ 共 1381字 ⁄ 字号 评论关闭

1 设备模型概述

2.6版本开始,Linux开发团队便为内核建立起一个统一的设备模型。在以前的内核中没有独立的数据结构用来让内核获得系统整体配合的信息。尽管缺乏这些信息,在多数情况下内核还是能正常工作的。然而,随着拓扑结构越来越复杂,以及要支持诸如电源管理等新特性的需求,向新版本的内核明确提出了这样的要求:需要有一个对系统结构的一般性抽象描述,即设备模型。

目的

I     设备、驱动、总线等彼此之间关系错综复杂。如果想让内核运行流畅,那就必须为每个模块编码实现这些功能。如此一来,内核将变得非常臃肿、冗余。而设备模型的理念即是将这些代码抽象成各模块共用的框架,这样不但代码简洁了,也可让设备驱动开发者摆脱这本让人头痛但又必不可少的一劫,将有限的精力放于设备差异性的实现。

II    设备模型用类的思想将具有相似功能的设备放到一起管理,并将相似部分萃取出来,使用一份代码实现。从而使结构更加清晰,简洁。

III   动态分配主从设备号,有效解决设备号的不足。设备模型实现了只有设备在位时才为其分配主从设备号,这与之前版本为每个设备分配一个主从设备号不同,使得有限的资源得到合理利用。

IV   设备模型提供sysfs文件系统,以文件的方式让本是抽象复杂而又无法捉摸的结构清晰可视起来。同时也给用户空间程序配置处于内核空间的设备驱动提供了一个友善的通道。

V   程序具有随意性,同一个功能,不同的人实现的方法和风格各不相同,设备驱动亦是如此。大量的设备亦若实现方法流程均不相同,对以后的管理、重构将是难以想象的工作量。设备模型恰是提供了一个模板,一个被证明过的最优的思路和流程,这减少了开发者设计过程中不必要的错误,也给以后的维护扫除了障碍。

任务

与用户空间通信

sysfs的实现与设备模型密切相关,并且向外界展示了它所表述的结构。向用户空间所提供的系统信息,以及改变操作参数的接口,将越来越多地通过sysfs实现,也就是说,通过设备模型实现。

热插拔设备

越来越多的计算机设备可被动态的热插拔了,也就是说,外围设备可根据用户的需要安装与卸载。内核中的热插拔机制可以处理热插拔设备,特别是能够与用户空间进行关于热插拔设备的通信,而这种机制也是通过设备模型管理的。

设备类型

系统中的许多部分对设备如何连接的信息并不感兴趣,但是它们需要知道哪些类型的设备是可以使用的。设备模型包括了将设备分类的机制,它会在更高的功能层上描述这些设备,并使得这些设备对用户空间可见。

对象生命周期

上述许多功能,包括热插拔支持和sysfs,使得内核中创建和管理对象的工作更为复杂。设备模型的实现需要创建一系列机制以处理对象的生命周期、对象之间的关系,以及这些对象在用户空间中的表示。

电源管理和系统关机

完成这些工作需要一些 对系统结构的理解。比如一个USB宿主适配器,在处理完所有与其连接的设备前是不能被关闭的。设备模型使得操作系统能够以正确的顺序遍历系统硬件。

图例

我们以USB鼠标为例,初识设备模型。如图1-1(来自LDD3)所示。图中以简化方式显示了与USB鼠标相关联的设备模型的一小部分。在图的中央,可以看到核心“Devices”树的一部分,它表明了鼠标是如何连接到系统的。“Buses”树跟踪了连接到每个总线的设备,在“Classes”下的子树更关心设备所提供的功能,而不是设备是如何连接的。

 

1-1:设备模型的一小片段

抱歉!评论已关闭.