目录
五种IO模型
Unix io存在五种模型
-
阻塞式IO
应用进程被阻塞,直到数据从内核缓冲区中返回进程缓冲区才返回
-
非阻塞式IO
进行系统调用后,内核返回一个错误码,进程不断轮询查看io是否完成
-
IO复用
使用select,poll,epoll等待处理数据,并可以同时监听多个socket
-
信号驱动式IO
立即返回,当数据准备完成内核向进程发送信号,信号处理程序来拷贝数据
-
异步IO
立即返回,应用进程继续执行,内核会在所有操作完成之后向进程发送信号
什么是同步io什么是异步io
同步IO和异步IO的区别就在于第二个步骤是否阻塞。
如果实际的IO读写阻塞请求进程,那么就是同步IO,因此阻塞IO、非阻塞IO、IO服用、信号驱动IO都是同步IO。
如果不阻塞,而是操作系统帮你做完IO操作再将结果返回给你,那么就是异步IO。
阻塞IO和非阻塞IO的区别在于第一步,发起IO请求是否会被阻塞,如果阻塞直到完成那么就是传统的阻塞IO,如果不阻塞,那么就是非阻塞IO。
select() poll() epoll() 区别
本质上都是同步I/O,因