![非阻塞系统调用和模式切换](https://linux22.com/image/124383/%E9%9D%9E%E9%98%BB%E5%A1%9E%E7%B3%BB%E7%BB%9F%E8%B0%83%E7%94%A8%E5%92%8C%E6%A8%A1%E5%BC%8F%E5%88%87%E6%8D%A2.png)
假设我们调用异步 IO 的系统调用。调用系统调用时,模式从用户态转变为内核态。调用后,模式应立即更改回用户模式,以便用户应用程序可以进一步执行(因为它是非阻塞的)。
现在,如果模式更改为用户模式,那么当模式从内核更改为用户模式时,内核将如何处理 IO?内核会在用户模式下执行异步IO吗?
答案1
想要使用 AIO 的进程通过 io_setup() 创建 AIO 上下文 (kioctx)。 AIO 上下文有一个环形缓冲区 (aio_ring_info)。该内存缓冲区将位于进程的地址空间中,但可由内核访问。