Java IO 的演变之路。与 NIO 不同的是,当 AIO 进行读写操作时,只须直接调用 API 的 read 或 write 方法即可,这两种方法均为异步的,对于读操作而言,当有流可读的时候,操作系统会将可读的流传入 read 方法的缓冲区,对于写操作而言,当操作系统将 write 方法传递的流写入完毕时,操作系统主动通知应用程序。
通过 sendfile 系统调用,数据可以直接在内核空间内部进行 I/O 传输,从而省去了数据在用户空间和内核空间之间的来回拷贝,sendfile 调用中 I/O 数据对用户空间是完全不可见的,整个拷贝过程会发生 2 次上下文切换,1 次 CPU 拷贝和 2 次 DMA 拷贝。