1、I/O模型
1、阻塞式IO;
等待数据从内核复制到用户空间(recvfrom)
2、非阻塞式IO;
当没有数据准备好时,返回一个错误,然后继续调用请求(recvfrom)
3、IO复用(select和poll);
有了IO复用,我们可以调用select和poll,阻塞在这两个系统中的某一个之上,而不是阻塞真正的IO系统调用上。
4、信号驱动式IO(SIGIO);
我们也可以用信号,让内核在描述符就绪时发送SIGIO信号通知我们。
先建立SIGIO信号处理程序(sigaction系统调用),之后数据报准备好,内核递交SIGIO通知应用程序,应用程序系统调用recvfrom将数据从内核复制到用户空间。
5、异步IO;
告知内核启动某个操作,并让内核在整个操作完成后通知我们。
应用程序调用aio_read函数,无数据报准备好时,返回;当有数据报准备好时,将数据从内核复制到用户空间,递交在aio_read中指定的信号