UNIX的5种I/O模型

版权声明:版权所有,转载请注明出处。 https://blog.csdn.net/pdfcxc/article/details/89072761
1. 阻塞I/O模型:(个人理解:调用完成或者发生错误才返回)
2. 非阻塞I/O模型:一般会进行轮询
3. I/O复用模型:Linux提供select/poll,进程通过将一个或多个fd传递给select或poll系统调用,阻塞在select操作上,这样select/poll可以帮我们侦测多个fd是否处于就绪状态。select/poll是顺序扫描fd是否就绪,而且支持的fd数量有限。Linux还提供了epoll系统调用,epoll使用基于事件驱动方式代替顺序扫描,性能更高。
4. 信号驱动I/O模型:首先开启套接口信号驱动I/O功能,并通过系统调用sigaction执行一个信号处理函数(此系统调用立即返回,进程继续工作,它是非阻塞的)。当数据准备就绪时,就位该进程生成一个SIGIO信号,通过信号回调通知应用程序执行特定的操作,并通知主循环函数处理数据。
5. 异步I/O:告知内核启动某个动作,并让内核在整个操作完成后(包括将数据从内核复制到用户自己的缓冲区)通知我们。与信号驱动模型的主要区别是:信号驱动I/O由内核通知我们何时可以开始一个I/O操作,异步I/O模型由内核通知我们I/O操作何时已经完成。

猜你喜欢

转载自blog.csdn.net/pdfcxc/article/details/89072761