前言
前面所有的模型都是在针对等待IO就绪时的,即IO请求复制数据的过程依旧是阻塞的。而内核从内核缓冲区向应用层程序复制数据时用户线程在等待IO完成。
模型简介
AIO实现了IO全流程的非阻塞,就是应用进程发出系统调用后,是立即返回的,但是立即返回的不是处理结果,而是表示提交成功类似的意思。等内核数据准备好,将数据拷贝到用户进程缓冲区,发送信号通知用户进程IO操作执行完毕。
异步IO的优化思路很简单,只需要向内核发送一次请求,就可以完成数据状态询问和数据拷贝的所有操作,并且不用阻塞等待结果
阻塞、非阻塞、同步、异步IO划分
IO模型 | 特点 |
阻塞IO模型 | 同步阻塞 |
非阻塞IO模型 | 同步非阻塞 |
IO多路复用IO模型 | 同步阻塞 |
型号驱动IO模型 | 同步非阻塞 |
异步IO模型 | 异步非阻塞 |
•同步阻塞(blocking-IO)简称BIO
•同步非阻塞(non-blocking-IO)简称NIO
•异步非阻塞(asynchronous-non-blocking-IO)简称AIO