异步 IO
对于异步 IO 来说,读操作的流程如下所示:
当用户进程发起异步框架 AIO
提供的 aio_read
系统调用后,这个系统调用会马上返回。内核会准备好数据然后把数据从内核缓冲区拷贝到用户进程缓冲区,当 IO 的两个阶段都完成后,内核会发送一个信号通知用户进程 read
操作完成了。
因此,对于异步 IO 来说,用户进程在 IO 的两个阶段都不会被阻塞。
总结
POSIX
对同步 IO 和异步 IO 的定义如下:
- 同步 IO 操作会导致发起请求的进程被阻塞,直到 IO 操作完成。
- 异步 IO 操作导致发起请求的进程被阻塞。
根据 PISIX
的定义,可以把 IO 模型分为以下两类:
最后,各个 IO 模型的比较如下所示: