linux设备驱动之阻塞与非阻塞I/0

一、基本概念

    阻塞操作是指在执行设备操作时,若不能获取资源,则挂起当前进程,直到满足可操作的条件再进行操作。挂起的进程放到等待队列,当条件满足时,恢复执行。

   非阻塞操作是指当执行设备操作时,若不能获取资源,则立刻返回,不等待。

二、阻塞I/O

   阻塞I/O的是用等待队列实现的。一个进程的I/O操作被阻塞时,该进程就会将自身加到等待队列中,同时调度其他进程允许。当等待的条件满足时,该进程从休眠状态中被唤醒,同时要将自身从等待队列中移走。

三、非阻塞I/0

   通常用select()或poll()系统调用查询是否能对设备进行非阻塞 访问。select()和poll()最终会调用驱动函数的poll函数。所以要实现驱动程序中的poll函数。poll函数不会阻塞,但是select()会阻塞,直到文件描述集中至少有一个可访问或超时。

 

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xzp8891/article/details/17099771
个人分类: linux
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭