IO多路复用是5种I/O模型中的第3种,对各种模型讲个故事,故事情节为:老李去买火车票,三天后买到一张退票。参演人员(老李,黄牛,售票员,快递员),往返车站耗费1小时。描述下区别:本文地址:http://47.93.183.36/article/618.html,未经许可,不得转载.
1.阻塞I/O模型
老李去火车站买票,排队三天买到一张退票。
耗费:在车站吃喝拉撒睡 3天,其他事一件没干。
2.非阻塞I/O模型
老李去火车站买票,隔12小时去火车站问有没有退票,三天后买到一张票。
耗费:往返车站6次,路上6小时,其他时间做了好多事。
3.I/O复用模型
select: 就是一种实现,进程需要调用的时候,把请求发送给select ,可以发起多个,但是最多只能支持1024个,先天性的限制
poll: 没有限制,但是多余1024个性能会下降。
A.select/poll poll的中文意思就是轮询
老李去火车站买票,委托黄牛,然后每隔6小时电话黄牛询问,黄牛三天内买到票,然后老李去火车站交钱领票。
耗费:往返车站2次,路上2小时,黄牛手续费100元,打电话17次
B.epoll
老李去火车站买票,委托黄牛,黄牛买到后即通知老李去领,然后老李去火车站交钱领票。
耗费:往返车站2次,路上2小时,黄牛手续费100元,无需打电话
4.信号驱动I/O模型
老李去火车站买票,给售票员留下电话,有票后,售票员电话通知老李,然后老李去火车站交钱领票。
耗费:往返车站2次,路上2小时,免黄牛费100元,无需打电话
5.异步I/O模型
老李去火车站买票,给售票员留下电话,有票后,售票员电话通知老李并快递送票上门。
耗费:往返车站1次,路上1小时,免黄牛费100元,无需打电话本文地址:http://47.93.183.36/article/618.html,未经许可,不得转载.
1同2的区别是:自己轮询
2同3的区别是:委托黄牛
3同4的区别是:电话代替黄牛
4同5的区别是:电话通知是自取还是送票上门本文地址:http://47.93.183.36/article/618.html,未经许可,不得转载.
有一篇比较详细的图解I/O的五种模型文章,记一下:https://www.cnblogs.com/budongshu/p/5117584.html本文地址:http://47.93.183.36/article/618.html,未经许可,不得转载.
本文地址:http://47.93.183.36/article/618.html,未经许可,不得转载.
同步阻塞:俩段都是阻塞的,所有数据准备完成后,才响应
同步非阻塞:磁盘从磁盘复制到内核内存中的时候, 不停询问内核数据是否准备完成. 盲等,性能有可能更差 ,看上去他可以做别的事情了, 但是其实他在不停的循环. 但还是有一定的灵活性的
缺点: 无法处理多个I/O,比如用户打开文件,ctrl+C想终止这个操作,是无法停掉的
同步IO:如果第二段是阻塞的 ,代表是同步的
第一种,第二种,io复用,事件驱动,都是同步的.
异步IO:内核后台自己处理 ,把大量时间拿来处理用户请求本文地址:http://47.93.183.36/article/618.html,未经许可,不得转载.
本文地址:http://47.93.183.36/article/618.html 未经许可,不得转载. 手机访问本页请扫描右下方二维码.
手机扫码直接打开本页面 |