欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

Unix下5种I/O模型

发布时间:2024/7/19 编程问答 74 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Unix下5种I/O模型 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

Unix下I/O模型主要分为5种:

(1)阻塞式I/O

(2)非阻塞式I/O

(3)I/O复用(select和poll)

(4)信号驱动式I/O

(5)异步I/O

1、阻塞式I/O模型

unix基本的套接字接口,例如:connect、accept、read/write、recv/send、recvfrom/sendto、recvmsg/sendmsg,它们默认是阻塞的。

2、非阻塞式I/O模型

调用fcntl可以把一个套接字设置成非阻塞式。

3、I/O复用模型

I/O复用是通过调用select或者poll,阻塞在这两个系统调用之上,而不是阻塞在真正的I/O系统调用上。

4、信号驱动式I/O模型

我们首先开启套接字的信号驱动式I/O功能,并通过sigaction系统调用安装一个信号处理函数。该系统调用将立即返回,当数据包准备好读取时,内核就为该进程产生一个SIGIO信号。我们可以在信号处理函数中读取数据包。

5、异步I/O模型

告知内核启动某个操作,并让内核在整个操作完成后(包括将数据从内核复制到我们的缓冲区)通知我们。这种模型和前面信号驱动模型的区别在于:信号驱动式I/O是由内核通知我们何时可以启动一个I/O操作,而异步I/O模型是由内核通知我们I/O操作何时完成。

五种I/O模型比较:

参考:UNIX网络编程卷1:套接字联网API(第三版)

转载于:https://www.cnblogs.com/justkong/p/7192896.html

总结

以上是生活随笔为你收集整理的Unix下5种I/O模型的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。