linux设备驱动之阻塞与非阻塞I/0
2013-12-03 19:44
232 查看
一、基本概念
阻塞操作是指在执行设备操作时,若不能获取资源,则挂起当前进程,直到满足可操作的条件再进行操作。挂起的进程放到等待队列,当条件满足时,恢复执行。
非阻塞操作是指当执行设备操作时,若不能获取资源,则立刻返回,不等待。
二、阻塞I/O
阻塞I/O的是用等待队列实现的。一个进程的I/O操作被阻塞时,该进程就会将自身加到等待队列中,同时调度其他进程允许。当等待的条件满足时,该进程从休眠状态中被唤醒,同时要将自身从等待队列中移走。
三、非阻塞I/0
通常用select()或poll()系统调用查询是否能对设备进行非阻塞 访问。select()和poll()最终会调用驱动函数的poll函数。所以要实现驱动程序中的poll函数。poll函数不会阻塞,但是select()会阻塞,直到文件描述集中至少有一个可访问或超时。
阻塞操作是指在执行设备操作时,若不能获取资源,则挂起当前进程,直到满足可操作的条件再进行操作。挂起的进程放到等待队列,当条件满足时,恢复执行。
非阻塞操作是指当执行设备操作时,若不能获取资源,则立刻返回,不等待。
二、阻塞I/O
阻塞I/O的是用等待队列实现的。一个进程的I/O操作被阻塞时,该进程就会将自身加到等待队列中,同时调度其他进程允许。当等待的条件满足时,该进程从休眠状态中被唤醒,同时要将自身从等待队列中移走。
三、非阻塞I/0
通常用select()或poll()系统调用查询是否能对设备进行非阻塞 访问。select()和poll()最终会调用驱动函数的poll函数。所以要实现驱动程序中的poll函数。poll函数不会阻塞,但是select()会阻塞,直到文件描述集中至少有一个可访问或超时。
相关文章推荐
- Linux设备驱动编程之阻塞与非阻塞
- Linux设备驱动编程之阻塞与非阻塞
- Linux设备驱动之阻塞与非阻塞IO
- Linux 设备驱动中的 I/O模型(一)—— 阻塞和非阻塞I/O
- linux设备驱动之阻塞与非阻塞I/O
- Linux_设备驱动阻塞/非阻塞IO_等待队列
- Linux 设备驱动--- 阻塞型字符设备驱动 --- O_NONBLOCK --- 非阻塞标志
- Linux 设备驱动中的阻塞与非阻塞
- linux字符设备驱动-同步互斥阻塞笔记
- Linux字符设备驱动之同步互斥阻塞
- Linux 设备驱动--- 阻塞型字符设备驱动 --- O_NONBLOCK --- 非阻塞标志【转】
- linux设备驱动--阻塞IO
- linux设备驱动--阻塞IO(续)
- linux驱动开发-阻塞的字符设备
- Linux驱动开发-11、设备阻塞访问-等待队列
- Linux 设备驱动中的阻塞和同步机制
- Linux设备驱动之阻塞I/O与异步通知
- Linux设备驱动编程之阻塞与非阻塞
- Linux 设备驱动中的阻塞与非阻塞I/O
- 07-S3C2440驱动学习(一)嵌入式linux字符设备驱动-按键驱动程序之异步通知机制+原子操作+互斥信号量+阻塞与非阻塞+定时器去抖