NIO
2020-06-24 14:32:32 35 举报
AI智能生成
登录查看完整内容
nio思维导图
作者其他创作
大纲/内容
IO
分支主题
BIO
数据读取流程
1. 向操作系统发起读取数据
2. 操作系统阻塞该线程,并读取数据
3. 操作系统读取数据完毕
4. 数据从内核空间拷贝至用户空间
4. 用户线程开始消费
NIO
2. 操作系统返回 “数据未准备好”
3. 用户线程轮询
4. 操作系统读取数据完毕
5. 数据从内核空间拷贝之用户空间
6. 用户线程开始消费
IO多路复用
select
发起
向操作系统注册监听的fd数组
操作系统通知就绪,select顺序扫描
顺序扫描的fd就绪
poll
向操作系统注册监听的fd描述结构体数组包括fd,数据就绪状态
操作系统就绪时返回监听的数组结构体,并设置里面的值
判断那些fd就绪即可,不需要再去获取socket状态
epoll
向操作系统注册fd等待队列,并阻塞
数据就绪时通知监听程序,唤醒
数据拷贝
数据处理
0拷贝
指数据无需拷贝至用户空间
sendfile
mmap内存映射
直接内存
信号驱动io
注册fd监听信号,不阻塞,可执行其他code
数据就绪,通知进程
AIO
执行其他流程
数据就绪并拷贝至用户空间,通过回调函数或信号监听
通知用户进程处理
0 条评论
回复 删除
下一页