五种网络IO模型-阻塞I/O非阻塞I/OI/O多路复用信号驱动I/O异步I/O

Posted 众生皆苦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了五种网络IO模型-阻塞I/O非阻塞I/OI/O多路复用信号驱动I/O异步I/O相关的知识,希望对你有一定的参考价值。

1.阻塞I/O模型

我去面馆吃面,点了碗面条,我也不知道做面条需要多久,也不敢出去,只能在那里坐着等。等值师傅做完面,我吃完面条后,再去逛街。这里的吃面就是I/O操作。

 

 

2.非阻塞I/O模型

我不甘心在这里等着无聊,我想这段时间继续逛商场,但是又怕面条做好了,所以,我逛一会就回来吧台看一眼!为了吃碗面,来来回回跑,差点没跑断腿!

 

 

3.I/O多路复用

我同时在不同的地方点了菜,要跑来跑去的轮询几十遍,累死了。后来,善良的管理员安装了电子屏幕:上面写着每个菜的状态,我需要去看屏幕,就知道数据准备好了没有。著名的select、poll、epoll的差别就在这里。

 

 

4.信号驱动

管理员装了个短信系统,面做好了就发短信给我,但是由于成本原因,这个短信只发一次,而且在峰值的时候短信队列会有延时!

 

 

5.异步I/O

面馆的老板有个外面送餐员,面做好了,就派他直接送货上门。

同步与异步

  实际上同步与异步是针对应用程序与内核的交互而言的。同步过程中进程触发IO操作并等待或者轮询的去查看IO操作是否完成。异步过程中进程触发IO操作以后,直接返回,做自己的事情,IO交给内核来处理,完成后内核通知进程IO完成。同步与异步如下图所示:

阻塞与非阻塞

  简单理解为需要做一件事能不能立即得到返回应答,如果不能立即获得返回,需要等待,那就阻塞了,否则就可以理解为非阻塞。详细区别如下图所示:

 

 参考: http://www.open-open.com/doc/view/cbb2c3363c3b49ceb5812220a9c42e42

    http://blog.csdn.net/historyasamirror/article/details/5778378

    http://www.cnblogs.com/Anker/p/3254269.html

    http://www.cnblogs.com/nufangrensheng/p/3588690.html

信号驱动与异步驱动的区别:http://www.cnblogs.com/kamicoder/p/6476723.html

以上是关于五种网络IO模型-阻塞I/O非阻塞I/OI/O多路复用信号驱动I/O异步I/O的主要内容,如果未能解决你的问题,请参考以下文章

操作系统IO模型

五种IO模型

五种I/O 模式——阻塞(默认IO模式),非阻塞(常用语管道),I/O多路复用(IO多路复用的应用场景),信号I/O,异步I/O

大白话五种IO模型

大白话五种IO模型

Day681.NioEndpoint组件:Tomcat如何实现非阻塞I/O -深入拆解 Tomcat & Jetty