首先说一下IO的过程:应用程序进程向操作系统发送IO调用请求,操作系统这边准备数据,就是从外部IO设备读取数据到内核缓冲区,然后拷贝数据,从内核将数据拷贝到用户缓冲区中。流程图如下:

 BIO(同步阻塞IO)

BIO就是操作系统这边数据还没准备好,应用进程就一直阻塞等待,直到数据准备好拷贝到用户空间,等待才会结束。流程图如下:

 NIO(同步非阻塞IO)

NIO就是操作系统数据没有准备好,用户进程可以先去做其他的事儿,然后采用轮询的方式去进行系统调用,直到数据准备好,用户进程回来等待数据拷贝,拷贝完成后,返回成功提示,进程才会去处理数据。流程图如下:

 AIO(异步非阻塞IO)

BIO和NIO在数据拷贝的过程中,进程都会阻塞等待,而AIO是异步非阻塞IO,在数据拷贝到用户空间的过程中不会阻塞等待,它的过程就是,用户进程发起IO调用请求,操作系统会立即返回数据没有准备好的信息,但不会返回结果,这个时候进程可以去做其他事儿,等到操作系统准备好数据并拷贝到用户缓冲区中之后,会发信号通知用户进程,用户进程接收到通知之后,再去处理数据。流程图如下:

 

 

 

 

 

精彩链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: