模块化:使得驱动程序独立于内核其它部分建立,可在内核运行时根据需要动态“插入”和“卸载”驱动模块。这个特点使得驱动的编写非常的简单。
机制和策略:
机制是解决需要实现什么功能的问题;策略是如何使用这些功能的问题。
尽量不要让驱动程序带有策略,可增加驱动程序的灵活性和增加系统的安全。
从另一个角度看:驱动程序是应用程序和实际设备之间的一个软件层。所以我们可以在编写驱动程序的时候编写者拥有如何展现设备特性的权利。
在有限的开发周期中,用尽量简单的程序提供尽可能多的功能。
通常开发好的驱动程序由这些部分组成:
驱动程序
简单的示例程序
客户程序库
内核五大模块
模块:
每个模块由目标代码组成(2.4内核是.o文件,2.6内核是.ko文件),可以使用insmod降魔快链接到内存,使用rmmod移出模块。
设备和模块的分类:
字符设备、块设备、网络接口。
字符设备通常至少要事先open、close、read、write系统调用。
块设备上能够容纳文件系统。
对于网络接口:网络连接是面向流的,而网络设备确是面向包的,内核调用一套和数据包传输相关的函数而不是read和write。
安全问题:
谨防内存溢出
对于数据:1.任何用户空间传入的数据必须经过验证;2.内核传出的地址使用前必须清零或初始化;3.只有特权用户才允许一些危险操作。
什么是权能机制?待解释。
机制和策略:
机制是解决需要实现什么功能的问题;策略是如何使用这些功能的问题。
尽量不要让驱动程序带有策略,可增加驱动程序的灵活性和增加系统的安全。
从另一个角度看:驱动程序是应用程序和实际设备之间的一个软件层。所以我们可以在编写驱动程序的时候编写者拥有如何展现设备特性的权利。
在有限的开发周期中,用尽量简单的程序提供尽可能多的功能。
通常开发好的驱动程序由这些部分组成:
驱动程序
简单的示例程序
客户程序库
内核五大模块
模块:
每个模块由目标代码组成(2.4内核是.o文件,2.6内核是.ko文件),可以使用insmod降魔快链接到内存,使用rmmod移出模块。
设备和模块的分类:
字符设备、块设备、网络接口。
字符设备通常至少要事先open、close、read、write系统调用。
块设备上能够容纳文件系统。
对于网络接口:网络连接是面向流的,而网络设备确是面向包的,内核调用一套和数据包传输相关的函数而不是read和write。
安全问题:
谨防内存溢出
对于数据:1.任何用户空间传入的数据必须经过验证;2.内核传出的地址使用前必须清零或初始化;3.只有特权用户才允许一些危险操作。
什么是权能机制?待解释。