Linux设备驱动中的阻塞与非阻塞I/O

2014-11-24 11:57:31 · 作者: · 浏览: 3

阻塞和非阻塞I/O是设备访问的两种不同模式,驱动程序可以灵活的支持用户空间对设备的这两种访问方式


本例子讲述了这两者的区别 并实现I/O的等待队列机制, 并进行了用户空间的验证


基本概念:


1> 阻塞操作 是指 在执行设备操作时,若不能获得资源,则挂起进程直到满足操作条件后再进行操作。被挂起的进 程进入休眠, 被从调度器移走,直到条件满足。


2> 非阻塞操作 在不能进行设备操作时,并不挂起,它或者放弃,或者不停地查询,直到可以进行操作。非阻塞应用 程序通常使 用select系统调用查询是否可以对设备进行无阻塞的访问最终会引发设备驱动中poll函数执行。