码迷,mamicode.com
首页 > 其他好文 > 详细

I/O 模型详解

时间:2016-05-22 06:26:34      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:linux 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 模型详解

标签:linux i/o 模型详解

原文地址:http://9173436.blog.51cto.com/9163436/1775746

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!