同步I/O
阻塞I/O:进程保持阻塞状态,直到数据拷贝完成;
非阻塞I/O:轮询检查内核数据,直到数据准备好,再拷贝数据到进程,进行数据处理;需要注意的是,拷贝数据的过程中,进程依然是阻塞装填;
多路复用I/O:进程调用select
、poll
、epoll
函数,保持阻塞状态,但与阻塞I/O不同的是,这些函数可以同时处理多个I/O;
信号驱动I/O:首先建立一个信号处理函数,进程继续运行并不阻塞,当数据准备好时,进程会收到一个SIGIO
信号,可以在信号处理函数中处理数据;
异步I/O:在发起一个调用之后,调用者不能立即得到调用结果的返回,需要被调用者通过状态、通知和回调来通知调用者。