想成为大牛,不得不懂的五种Linux网络IO模型( 三 )


5. 异步IO模型AIO异步非阻塞模型,该模型是真正意义上的异步非阻塞式IO,数据准备与复制阶段都是异步非阻塞的 。
在该模型中,首先用户进程中会创建一个Sigio?信号处理程序,然后会系统调用sigaction?信号处理函数,紧接着内核会直接让用户进程中的线程返回,用户进程可在这期间干别的工作,当内核中的数据准备好之后,内核会生成一个Sigio?信号,通知对应的用户进程数据已准备就绪,然后由用户进程在触发一个recvfrom的系统调用,从内核中将数据拷贝出来进行处理 。

想成为大牛,不得不懂的五种Linux网络IO模型

文章插图
打比方理解:
你给女神发短信,女神准备好了并且主动来到你宿舍通知你,你开门 。同比,应用进程把IO请求传给内核后,完全由内核去操作文件拷贝到用户空间 。内核完成相关操作后,会发信号告诉应用进程本次IO已经完成 。
优点:
  • 真正实现了异步非阻塞,吞吐量高
缺点:
  • 对内核有要求,比如Linux系统中,异步IO在2.6才引入
总结本文讲解了Linux系统中5中IO模型,其中前面4种都属于同步IO,因为数据拷贝阶段都是处于阻塞状态,只有异步IO模型才真正实现了异步非阻塞 。
?
想成为大牛,不得不懂的五种Linux网络IO模型

文章插图

【想成为大牛,不得不懂的五种Linux网络IO模型】


推荐阅读