阻塞和非阻塞I/O

阻塞和非阻塞I/O是设备访问的两种不一样模式,驱动程序能够灵活的支持用户空间对设备的这两种访问形式。linux

       阻塞操做是指在执行设备操做时,若不能得到资源,则挂起进程直到知足可操做的条件后在进行操做。被挂起的进程进入休眠状态,被从调度器的运行队列移走,直到等待的条件被知足。spa

而非阻塞操做的进程在不能进行设备操做时,并不挂起,他或者放弃,或者不停的查询,直到能够进行操做为止。队列

     注:阻塞听起来意味着低效率,其实否则,若是设备部阻塞,则用户想获取设备资源时,只能不停的查询,这反而会增长CPU资源的耗费,而阻塞方式是,不能获取资源的进程将进入休眠,他将CPU资源让给其余的进程。进程

         阻塞会进入休眠,所以必须有一个地方可以唤醒休眠的进程,不然,这个进程就“寿终正寝”了。这个地方最大的多是在中断,由于硬件的资源的得到每每伴随着中断。下列演示了以阻塞和非阻塞方式读取串口的一个字符资源

       在linux驱动程序中,能够使用等待队列(wait queue)来实现阻塞进程的唤醒。
相关文章
相关标签/搜索