I/O 模型详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了I/O 模型详解相关的知识,希望对你有一定的参考价值。

阻塞进程发起I/O调用,为完成之前,当前进程会被挂起内核读取数据 用户主动查看数据是否加载完成
非阻塞进程发起I/O调用,被调用函数完成之前不会阻塞当前进程而是立即返回  然后在时不时看函数调用是否完成 (盲等)内核读取数据,内核响应数据给用户
同步进程发起一个过程调用(功能、函数)调用后,在没得到结果之前,该调用将不会返回用户进程数据等待内核数据同步
异步

进程发起一个过程调用,即便调用者不能立即得到结果,当调用却会返回

,返回时未完成状态,当调用完成后,内核会自行通知调用者已经OK

用户数据加载完内核数据后  内核在自行通知用户


I/O模型有5种:

同步阻塞等待内核  进程数据
同步非阻塞间断性主动访问内核
I/O复用 select()    poll()preform worker都是基于i/o复用  只是在同步非阻塞中多了一个select()用户还是要间断性访问 select()select最大打开1024 i/o第一阶段间断性访问 select第二阶段堵塞
事件驱动epoll()  kqueue()event基于事件驱动第一阶段等待内核通知 第二阶段还是堵塞   内核加载完数据 会主动通知用户 边缘触发    内核加载完数据  通知一次给用户水平触发  内核加载完数据 多次通知 给用户
AIO(异步非阻塞)支持不好(文件I/O支持  网络不支持)全部内核完成


同步阻塞:

技术分享

同步非阻塞:

技术分享

I/O复用:技术分享

事件驱动:

技术分享


以上是关于I/O 模型详解的主要内容,如果未能解决你的问题,请参考以下文章

I/O复用模型详解

I/O 模型详解

I/O 模型详解

Linux系统I/O模型详解

五种IO模型详解

《JDK源码分析》IO模型详解:第一章:IO模型演进(JAVA 小虚竹)