同步I/O与异步I/O
同步和异步是针对应用程序和内核的交互而言的,同步指的是用户进程触发IO操作并等待或者轮询的去查看IO操作是否就绪,而异步是指用户进程触发IO操作以后便开始做自己的事情,而当IO操作已经完成的时候会得到IO完成的通知。
1 | 指的是用户空间和内核空间数据交互的方式 |
同步I/O
用户使用应用程序时获取数据的步骤如下:
1 | 从用户空间应用程序获取数据,命中则返回 |
在调用SystemCall函数后会一直等待内核空间给到用户空间应用缓存后才做其他事情
异步I/O
用户使用应用程序时获取数据的步骤如下:
1 | 从用户空间应用程序获取数据,命中则返回 |
在调用SystemCall函数后会立即返回等待通知,同时可以处理其他事情,内核缓存会主动将数据从高速缓存页拷贝到应用缓存并且通知用户空间数据可用
阻塞I/O与非阻塞I/O
阻塞方式下读取或者写入函数将一直等待,而非阻塞方式下,读取或者写入函数会立即返回一个状态值。
1 | 指的是用户空间和内核空间IO操作的方式 |