设备驱动程序的作用:在于提供机制,而不是提供策略。
在编写访问硬件的内核代码时,不要给用户强加任何特定策略。因为不同的用户有不同的需求,驱动程序应该处理如何使硬件可用的问题,而将怎样使用硬件的问题留给上层应用程序。
总的来说,驱动程序设计主要还是综合考虑以下3个方面:
(1)提供给用户尽量多的选项;
(2)编写驱动程序要占用的时间;
(3)尽量保持程序简单且没有错误。
不带策略的驱动程序包括一些典型的特征:
(1)支持同步和异步操作
(2)驱动程序能多次被打开
(3)充分利用硬件特性
(4)不提供与策略相关的软件层
内核功能划分:(闭上眼睛想想主要有哪几个部分,每部分的大致功能)
(1)进程管理 SCHED IPC
(2)内存管理 MM
(3)文件系统 VFS
(4)设备管理
(5)网络功能 NET
Linux有一个很好的特性:模块可装载,可移除。
设备和模块的分类:
常用的分类:字符设备、块设备、网络设备。
字符设备和块设备的区别仅仅在于内核内部管理数据的方式,也就是内核及驱动程序之间的软件接口,而这些不同对于用户来说是透明的。
网络系统并不对应于文件系统的节点,所以你不会发现有/dev/eth0之类的东东存在。
安全问题注意事项:
(1)驱动程序编写者应当避免在代码中实现安全策略
(2)避免由于自身原因引入安全方面的缺陷,比如C语言中容易产生错误的几种类型
(3)任何用户进程得到的输入只有经过内核严格验证后才能使用
(4)必须小心对待未初始化的内存,就是说一定要初始化内存
(5)小心使用第三方获得的软件
阅读(1113) | 评论(0) | 转发(0) |