课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
IO模型是程序员在学习编程开发语言的时候需要重点掌握的一个编程知识点,而今天我们就通过案例分析来了解一下,常见的几种IO模型都有哪些类型。
1、阻塞IO
用户进程在获取IO数据时,简单的方式就是串行,即阻塞IO(BIO)。
2、非阻塞IO
鉴于BIO有串行效率低的缺点,我们做了优化,就是不再一直等待数据准备好,而是用户进程主动多次询问。
3、IO复用
IO复用模型去掉了应用进程主动询问的过程,而是把数据是否准备好交给了内核处理,内核通过select/poll去遍历检查数据是否准备好,或者通过epoll回调方式处理。
4、信号驱动IO
信号驱动IO与IO多路复用大的区别就在于,在IO执行的数据准备阶段,不会阻塞用户进程。如图所示:当用户进程需要等待数据的时候,会向内核发送一个信号,告诉内核我要什么数据,然后用户进程就继续做别的事情去了,而当内核中的数据准备好之后,内核立马发给用户进程一个信号,说”数据准备好了,快来查收“,用户进程收到信号之后,立马调用recvfrom去查收数据。
5、异步IO
AIO,异步IO真正实现了IO全流程(两个阶段)的非阻塞。用户进程发出系统调用后立即返回,内核等待数据准备完成,然后将数据拷贝到用户进程缓冲区,然后发送信号告诉用户进程IO操作执行完毕(与SIGIO相比,一个是发送信号告诉用户进程数据准备完毕,一个是IO执行完毕)。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请在707945861群中学习了解。