tcpio5种io模型
来源:互联网 发布:动漫手办淘宝 编辑:程序博客网 时间:2024/06/07 01:32
传智扫地僧课程学习笔记。
阻塞IO,
recv,接收数据,若没有,将阻塞,
当对方发数据来后,linux内核缓冲区得到数据,
内核数据复制到recv()调用所在的用户空间,
阻塞解除,进行下一步处理,
非阻塞IO,可以通过设置来实现,
轮询调用recv函数接收数据,
没有数据,立即返回,然后继续调用,
根据返回值来判定时候读到数据,
这种方式大量消耗CPU,应用范围小,一般和selectIO复用配合使用,
IO复用,
select机制,可以轮询多个fd的状态变化,
进而决定recv是否要进行数据的读,而不致像上面两种极端,
但是所轮询的多个fd都没有状态变化,也将阻塞,
同时select也可以设置等待时间,避免干等,
信号驱动IO,
建立一个信号,当有数据到来的时候,通知上层应用去读取数据,
这种模型用的较少,信号发送有延迟,处理数据有延迟,内核数据也可能发生变化,
异步IO,(这部分面试可能考,并且有必要再来回顾下)
一定要与信号驱动IO对比理解,
为什么说信号驱动的延迟大呢?
因为有数据了,得发送一个信号去通知上层应用,
通知之后,还不一定马上来读取,
有机会读取了,还得跑过来读,
而异步IO,上层应用提供了一个应用层的缓冲区,
有数据了,内核会主动,主动,主动,的把数据塞到应用层提供的这个缓冲区,而不用像上面那样有那么的工序去主动地读,不过这个复杂工序你暂时没办法了解很深入,但是可以肯定的是,主动读肯定涉及到很多过程处理,
0 0
- tcpio5种io模型
- Unix5种IO模型
- 五种IO模型
- IO五种模型
- 几种IO模型
- 5种IO模型
- 5种IO模型
- Unix5种IO模型
- 五种IO模型
- 五种IO模型
- 五种io模型
- IO概念&5种IO模型介绍
- UNIX四种IO模型
- IO的五种模型
- Linux五种IO模型
- 5种网络IO模型
- IO的五种模型
- Linux五种IO模型
- spring的几个基本注解
- Android 控件学习(极慢更新)
- iOS中谓词的使用(一)
- topcoder SRM 517 div1 AdjacentSwaps 分析与题解
- javascript基础 AJAX简单demo 2017年1月29日
- tcpio5种io模型
- leetcode 389 Find the Difference
- Atcoder#53
- 如何激活webstorm
- BZOJ 4515 [Sdoi2016]游戏
- 链表中环的入口结点(单链表)
- 略论错误提示的人性化
- mysql update select用法实例
- NYOJ 746 整数划分(四)详解 (区间DP)