linux中的阻塞IO驱动和非阻塞NIO驱动
发布时间
阅读量:
阅读量
一,概念
IO是Input stream输入/Output stream输出的缩写,对于驱动程序而言,IO指的是用户程序对设备资源的访问与操作。在IO操作过程中,存在多种状态形式,包括阻塞、非阻塞、同步以及异步。
1,阻塞意味着当某个操作的执行条件未达成时,该操作将保持等待状态,直至条件满足为止。
2,非阻塞则表示当执行条件未满足时,该操作会立即返回当前无法执行的结果,并继续后续处理流程。
3,同步是指多个操作同时发生时,这些操作需要按照顺序依次进行。
4,异步则是指多个操作同时发生时,这些操作可以并行执行。
对于驱动程序而言,IO操作通常可以理解为对外设数据的读取或写入。一个完整的IO过程包含两个阶段:第一阶段是检查外设数据是否已经就绪;第二阶段是数据准备完成后进行外设数据的读写。
阻塞 IO 与非阻塞 IO:当应用程序发出IO请求后,在目标外设或数据尚未准备好的情况下,若采用阻塞 IO 方式,则应用程序会在 read 方法中持续等待直到数据就绪后才会返回结果。而非阻塞 IO 则会在数据未准备好时直接返回提示信息,并由应用程序自行处理失败情况并重新尝试读取或其他处理方式。由此可见,阻塞 IO 与非阻塞 IO 的区别主要体现在IO操作的第一阶段。
同步 IO 与异步 IO:同步 IO 和异步 IO 实际上是针对应用程序与内核之间交互方式而言的。当应用程序发出IO请求
全部评论 (0)
还没有任何评论哟~
