linux驱动中的异步IO/中断与内核延时
2019-07-13 00:52发布
生成海报
一:异步IO
- 阻塞,非阻塞,信号异步通知之间的区别:阻塞IO指读取文件时如果获得不到资源时此进程休眠,直到获得资源时在返回,非阻塞指的是读取时不管有没有获得资源立即返回,信号信号异步通知指的是,硬件设备准备好之后会给相应进程发送信号,通知进程硬件设备准备好了。
- 异步IO,进行读取时立即返回,返回的不是读取的结果,读取结果要用特定函数查询,确定读取完成了,然后用特定函数返回值。
二:中断与内核延时
- linux中的中断采用顶半部与低半部的结构,顶半部处理紧急的事物,低半部处理非紧急的事物
- 低半部的机制有tasklet和工作队列,tasklet 运行于软中断上下文,任然属于原子上下文的一种,而工作队列运行于进程上下文,因此,tasklet处理函数中不能睡眠,而工作队列处理函数中允许睡眠。
- 内核定时器,对于周期性的事务操作可以启用内核定时器,对于延时一段时间在操作的情况用delayed_work ,内核的延时有短延时,长延时,依据不同情况选用。
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮