- 驱动程序的基本形式是中断模式,中断属于异步编程。
- 关闭中断可以形成轮询模式。轮询和中断是驱动程序设计的两种基本模式,其它模式在这基础上进行延申。
- 轮询模式可以是忙等待轮询和择机轮询。
- 忙等待持续轮询状态,直到完成,这期间主循环不能处理其它事务,忙等待属于顺序编程。
- 择机轮询检测到未完成时将退出,转而处理其它事务,当有空闲时再次轮询,需要借助状态机实现保存和恢复上下文,择机轮询是异步编程。
- 中断配合操作系统形成挂起等待模式,挂起等待是顺序编程。
- 协程是对择机轮询的简化,将显式的状态机设计转为隐式状态机,让异步编程看起来像顺序编程,简化设计、提高可读性。
- 事件驱动模型是中断模式的泛化。
- DMA和FIFO是优化措施,将多个中断或轮询简化为一个中断或轮询。
- 底层驱动是异步编程,上层应用可以按异步编程来使用,也可以按顺序编程来使用,异步编程可以封装成顺序编程。
- 底层驱动是顺序编程,上层应用只能按顺序编程来使用,顺序编程不能封装成异步编程。
- 轮询模式实现起来比较简单,但执行效率低,会浪费处理运算资源,择机轮询的及时性较差。
- 中断模式执行效率高,及时性高,实现起来麻烦一些。
- 应该按应用需求选择采用哪种模式,轮询和中断各有千秋,各有各的好处。