用户的活动通过一套标准化的调用来进行,这些调用与特别的驱动是独立的; 设备驱动的角色就是将这些调用映射到作用于实际硬件的和设备相关的操作上
机制:提供什么功能,策略:如何使用这些功能。我的理解:机制应该是提供的最小的基础功能集合,策略是在机制之上的组合和扩展。 编写内核代码来存取硬件,但是不能强加特别的策略给用户。驱动只保证硬件可用,把如何使用硬件交给应用程序。 驱动是存在于应用程序和实际设备间的软件层。 对策略透明的驱动一些典型的特征:
支持同步和异步操作可以多次打开利用硬件全部能力没有软件层来“简化事情”或者提供策略相关操作只有有授权的用户才可以加载模块 开发者应该避免把安全策略编入驱动代码中 一些安全观念:
从用户进程接收到的数据应该持极大的怀疑态度小心对待未初始化的内存,从内核分配的内存应该清零活在使用之前初始化,否则可能发生信息泄露如果设备解析发送给他的数据,确保用户不能发送任何危及系统的东西考虑一下设备操作的后果,操作应该授权特定的用户