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模型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: prop attr 到底哪里不一样?
- 下一篇: python FOR循环