网络IO模型
所属分类 nio
浏览量 876
阻塞IO 非阻塞IO 多路复用IO 信号驱动IO 异步IO
阻塞IO BIO bloking IO
非阻塞IO NIO non-blocking IO
多路复用IO multiplexing IO select poll epoll
信号驱动式IO signal-driven IO
异步IO AIO asynchronous IO
POSIX 定义
同步I/O操作(synchronous I/O operation) 请求进程阻塞,直到I/O操作完成
异步I/O操作(asynchronous I/O operation)请求进程不会阻塞
除了异步IO ,其他都是 同步IO
用户进程/线程 Process/Thread
内核 Kernel
网络IO socket流读取 ,两个步骤
1 等待网络数据分组到达,复制到内核缓冲区
2 把数据从内核缓冲区复制到应用进程缓冲区
阻塞IO 两个阶段的操作都是阻塞的
非阻塞IO 第一个阶段不会阻塞
多路复用IO
select poll epoll , 以较少的代价同时监听处理多个IO
linux提供select/poll,进程将一个或多个fd传递给select或poll系统调用,阻塞在select
侦测多个fd是否就绪
select/poll 顺序扫描fd是否就绪,支持的fd数量有限
epoll系统调用,基于事件驱动方式,fd就绪时,立即回调函数rollback
信号驱动
内核在FD就绪时发送SIGIO信号
异步IO
linux网络IO处理的第二阶段总是阻塞等待数据copy完成
真正意义上的网络异步IO是Windows下的IOCP
信号驱动IO VS 异步IO
信号驱动IO 由内核通知何时启动一个IO操作
异步IO 由内核通知IO操作何时完成
几种IO比较
select poll epoll 区别
上一篇
下一篇
linux sysstat
jvm到底能运行多少个线程
aerospike数据删除机制
G1调优建议
检查硬盘是否为SSD
NIO概述