设为首页 加入收藏

TOP

Linux下5种IO模型的小结
2015-07-26 13:14:23 来源: 作者: 【 】 浏览:42
Tags:Linux 模型 小结

? ? 同步与异步的主要区别就在于:会不会导致请求进程(或线程)阻塞。同步会使请求进程(或线程)阻塞而异步不会。


? ? linux下有五种常见的IO模型,其中只有一种异步模型,其余皆为同步模型。如图:


Linux下5种IO模型的小结?


? ? 阻塞IO模型是最常见的IO模型了,对于所有的“慢速设备”(socket、pipe、fifo、terminal)的IO默认的方式都是阻塞的方式。阻塞就是进程放弃cpu,让给其他进程使用cpu。进程阻塞最显著的表现就是“进程睡眠了”。阻塞的时间通常取决于“数据”是否到来。


?


? ?


? ? ?非阻塞IO就是设置IO相关的系统调用为non-blocaking,随后进行的IO操作无论有没有可用数据都会立即返回,并设置errno为EWOULDBLOCK或者EAGAIN。我们可以通过主动check的方式(polling,轮询)确保IO有效时,随之进行相关的IO操作。当然这种方式看起来就似乎不太靠谱,浪费了太多的CPU时间,用宝贵的CPU时间做轮询太不靠谱儿了。图示:


?


? ?


? ? ?


? ? Linux上异步IO有一组POSIX规定的接口,已aio开头的几个SYSCALL。如下:


? ?下图是关于异步IO模型的图示:



?


?


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇免费工具检测Hacking Team间谍软件 下一篇怎样理解阻塞非阻塞与同步异步的..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: