Linux驱动--->(一,二,三)

驱动程序的角色:
作为一个驱动程序员必须要理解驱动程序的角色,驱动程序提供的是机制而不是策略.机制与策略的区分是Unux背后设计的观念。大部分编程问题其实可以划分为2部份,提供什么能力(机制),以及怎样使用这种能力(策略).机制对策略的透明是非常重要的。驱动应当做到使硬件可用,将所有关于如何使用硬件的事情留给应用程序,一个驱动,这样就是灵活的。
程序员可以从不同的角度看待驱动。它是一个存在于应用程序与实际设备的软件层。驱动的这种特权的角色允许驱动程序员严密的选择设备应该如何表现。甚至是同一设备,不同的驱动可以提供不同的能力。实际的驱动设计应当是在许多不同考虑中的平衡。
Linux内核角色的划分:
进程管理:内核负责创建与销毁进程。并处理它们与外部世界的联系,以及进程之间的相互通信。
内存管理:内核为每一个进程在有限的内存空间上建了一个虚拟地址空间,内核的不同部分通过一套函数调用与内存管理系统进行交互。
文件系统:内核在非结构化的硬件之上建立了一个结构化的文件系统,Linux中对设备的大部份操作都是接助于文件系统实现的。另外,Linux支持多个文件系统,就是说物理介质上不同的数据组织方式。
可加载模块:
可加载模块是Linux系统的众多优良特性之一,每个模块是由目标代码组成(没有链接成一个完整的可执行程序),通过insmod与rmmod可以实现动态的添加到运行中的内核中。
设备和模块分类
Linux中将设备划分为三类,字符设备,块设备,网络设备。
字符设备:以字节流进行存取的设备,字符驱动负责实现字符流的存取。
块设备:(例如一个磁盘)应该是可以驻有一个文件系统的,大部份的Unix系统中块设备只能一次传送一个或多个512字节的整块,Linux相反,允许应用程序一次读写任意数目的字节。
网络设备:任何网络事务都是通过一个接口来实现,一个接口实际上就是一个硬件设备,负责接收与发送数据报文,Unix提供的对接口的存取的方式仍然是通过分配一个名字(如eth0),但是这个名字在文件系统中没有对应的入口。
安全问题:
系统中任何安全检查都是由内核强加上去的,如果内核有安全漏洞,系统做为一个整体就有漏洞。在官方发布的内核里,只有一个有授权的用户可以加载模块,系统在加载模块时会调用init_module检查调用进程是否有权加载模块到内核里。
注意.Linux内核可以编译成不再支持用户自已加载模块,因此也就关闭了后期任何与模块相关的安全漏洞。在这种情况下,所有需要的模块必须直接在编译时编译到内核内部。2.2以后的内核可以在系统启动之后通过capability机制来禁止内核模块的加载。

二-----http://www.cnblogs.com/WJPeng/archive/2012/11/13/2767413.html

三-----http://www.cnblogs.com/WJPeng/archive/2012/11/22/2782222.html

posted @ 2012-11-22 16:47  梓涵VV  阅读(214)  评论(0)    收藏  举报