LDD3学习笔记Linux设备模型之由来

来源:互联网 发布:niconico是什么软件 编辑:程序博客网 时间:2024/05/16 11:18

一、为何需要你?

   按LDD3第十四章第359页第一段的说法,我们得出设备模型这个需求提出的缘由。系统拓扑结构越来越复杂,以及要支持电源管理的需求,这个客观存在的问题以及这个有着“必须的”性质的需求提出了需要有一个对系统结构的一般性抽象描述。这个一般性抽象描述便是设备模型

    这个客观存在的问题容易理解,linux要支持多种平台,多种外围设备,其结构必定复杂,这个复杂性的体现在内核源代码的行数上,你知我知内核源代码的行数的数量级。那电源管理这个需求何来,重点词汇节能,现在很流行的一个词汇,咋东西都要节能,节能太重要了,这么重要的事,linux当然也要做出自己的一份力。这好像有点扯淡!!设备模型与电源管理联系起来已经有些扯淡的意味了,再摆出个节能来,更扯淡了。我们写出代码来最终是要去控制设备的工作的,设备的工作需要电能,每一个设备插入系统后都由系统来为设备分配电能,这部分由电源管理部件来管理。设备连上系统后,如果工作它肯定要吃饭,暂时没有工作等会可能要工作那就先让你等候着,也要吃饭,但给的饭量可以少一点,什么时候给你吃多一点什么时候少一点,由相关的管理部分--电源管理负责,这叫节约闹革命。另外就是决定生死问题,有些设备可以后去,有些设备的生死关系太多命运,它要后挂。比如USB宿主适配器,靠它生存的设备有U盘呀,USB鼠标呀等等USB接口设备。如果你要关掉USB宿主适配器,你得先把它底下的设备给关掉再说,要不它们死得冤枉,有不满,不满压抑太多回了,它会真的挂掉,你我会心疼的。如果能把系统的设备组织得像一棵树一样,要树叶挂掉而没必要砍掉树枝,只要把树叶去掉就可以了,那应该多好。这就是设备模型,它让设备有组织有纪律。充分利用能源,节能而又不影响我们的日常生活这就是和谐,在linux管理的系统上这由设备模型提供这样的支持。这也就是设备模型被提出来的初衷。

二、你现在过得怎么样?

    在linux社区里,只要你的需求不过分,那么社区肯定以最大的努力满足你的需求。设备模型这个需求也不例外,通过2.5版本的实验和测试,终于在2.6版满足了这样的需求。人类的需求是无止境的,有需求是好事,这样可以促进社会的进步。当然你的需求是那么的简单,得到满足后,你不会停止,当然我也不会拒绝。现在,设备模型提供的能力远远超出了当初的需求。内核使用设备模型支持了不同的任务,其中包括:


电源管理和系统关机

  这个基本上就是当初的需求了。

与用户空间通信

  内核空间与用户空间的联系的限制是那么大,以致于要约会是件多么困难的事。社区想了很多办法,也尝试了很多途径,现在这种约会越来越方便了。通过一种叫做sysfs虚拟文件系统的东西,内核把系统的信息用艺术级别的美感呈现在用户的面前,用户通过内核导出的完美的接口(这些接口通过sysfs传递)与内核进行无隙的沟通。这些也是通过设备模型来实现的,现在你还不懂,以后你会越来越清楚地看到,体味到这一点。

热插拔设备

    现在方便了,想插就插想拔就拔。用户可以放心地进行这样的操作,内核中的热插拔机制可以处理这样的设备,这种机制也是通过设备模型来管理。

设备类型

  设备五花八门,但是不管怎么乱,还是可以分类的,通过设备模型提供的分类功能。把设备分好类,这样,系统就知道应该怎么样更好地为设备服务,或者由于我不认识你,你走吧。不至于你为不速之客提供了不对称地服务,他不爽你也觉得亏。这个也由设备模型实现设备的分类。

对象生命周期

  对象是不是应该结束它的生命了,现在变得非常复杂。因为设备太多了,你的存在决定我的存在,我的存在决定他的存在,他的存在决定你的存在,别绕进去了。基本就是说,很多设备对象存在关系到其他设备对象的存在,为了知道我信赖的那个她还活着,或者信赖我的那个她知道我还活着,需要你我他有一些共同的东西标识我们存在。这也由设备模型也支持。

 

 

我没有照着课本一眼一板地书写,我只是按照我对书本的理解,用自己的语言表述出来。基本算是理解得没错。。。

驱动程序就是为了让设备工作,我们要学习驱动程序的编写,理解设备模型真的非常重要。重要的东西往往是比较难理解的东西,第一次读过去不理解,不要急,多读几遍。再怎么说它也是个综合的部分,会融合了很多知识,这么多知识要理解起来当然比较困难,何况它们是相互依赖,关系是错综复杂的。设备模型的复杂给我们提供的信息确实是简单而美丽的。一个系统要支持各种各样的设备,提供一个美丽而简单的方法和视图给我们需要多大的智慧。设备模型是美丽的,让我们静下心来,耐信性子,慢慢理解。到最后肯定得够体味出它的美感。

 

书本也说了,要想从高层次去理解设备模型比较困难,我照着书本的顺序去学习,就算到最后整全部分,对设备模型有了一定的了解了,我想从高层反过来去理解依然是困难的。所以,我觉得从底层去理解是一种好的方法,也是被证明了是一种相对容易的方法。记住设备模型对驱动程序的编写非常重要,等你对设备模型的理解熟透了以后,再去写驱动程序会有一种“会当凌绝顶,一览众山小“的感觉。我还是个菜鸟,还没有这种感觉,但那些哥都这么说,哥都说是这样了,我们就相信吧。

 

 

原创粉丝点击