IO模型

IO模型

IO分为BIO(同步阻塞)、NIO(同步非阻塞)、AIO(异步非阻塞)

BIO

BIO是同步阻塞模型,一般是进程或者线程一直等待,直到某个条件满足后才会继续向下运行。在IO模型中如下图

进程在调用的过程中需要一直等待,直到获得数据

NIO

NIO是同步非阻塞模型,当进程进行系统调用后,如果内核没有准备好数据,则可以去执行其他任务,,不过过段时间又需要去进行系统调用查看数据是否准备完成,即需要定时去和内核交互。IO模型如下

AIO

AIO是异步非阻塞IO,在发起系统调用后,内核未准备好数据就直接返回,进程可以去处理其他任务,当内核准备好数据后,也不需要进程过来将数据从内核空间复制到用户空间,而是内核直接将数据拷贝到用户空间,然后通知进程数据已经在用户空间了,然后进程直接处理数据即可。