BIO-NIO-AIO 阻塞/非阻塞 同步/非同步一文说清楚

1. 概念一

内核空间/用户空间:

进程的虚拟地址空间总体分为用户空间和内核空间,4G内存为例:低地址上的 3GB 属于用户空间, 高地址的 1GB 是内核空间,这是基于安全上的考虑,用户程序只能访问用户空间,内核程 序可以访问整个进程空间,并且只有内核可以直接访问各种硬件资源,比如磁盘和网卡

流程:

当用户线程发起I/O调用后,网络数据读取会经历两个步骤:

a. 用户线程等待内核讲数据从网卡copy 到内核空间 (阻塞非阻塞)

b. 内核将数据从内核空间copy 到应用空间 (同步/非同步)

BIO 同步阻塞IO accept阶段:线程到内核是阻塞的,read阶段:内核空间到应用空间也是同步 连接数小且固定的架构
NIO 同步非阻塞IO accept阶段:用户线程到内核是非阻塞的,read阶段:内核空间到应用空间是同步 链接数多&链接时间比较短的架构

reactor

AIO 异步非阻塞IO accept与read阶段都使用用回调函数的形式 链接数据多且需要长时间链接 Proactor

猜你喜欢

转载自blog.csdn.net/caicongyang/article/details/123757116