- 阻塞、非阻塞I/O
阻塞I/O:进程阻塞直到操作完成,再返回
非阻塞I/O:进程在内核还没准备好数据情况下立即返回,然后不断访问直到获取数据
- 同步、异步I/O
同步I/O在做IO操作时会将进程阻塞
阻塞I/O、非阻塞I/O都是同步I/O:
解释:非阻塞I/O在内核准备好数据后还是要阻塞进程,进行IO操作。
异步I/O则不一样,当进程发起IO操作后,直接返回,直到内核发送信号,告诉进程说IO操作已经完成了。(感觉有点类似DMA)。进程不需要检查IO操作的状态,也不需要主动去拷贝数据。
所以同步异步IO的根本区别:当数据在内核中准备好之后:
同步:进程自己负责读写;
异步:内核负责读写