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(第三版)

發佈了71 篇原創文章 · 獲贊 10 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章