伺服器如何選擇合適的IO模型

十月1575873887發表於2022-12-12

伺服器如何選擇合適的IO模型

IO模型又分為:

(1).阻塞I/O模型:資料沒到達之前,I/O一直阻塞,如果資料到達,則會返回。典型的是recvfrom,一般的預設都是阻塞的。

(2).非阻塞的I/O模型:和阻塞相反,只要不能得到結果的時候,I/O立刻返回。不會阻塞當前執行緒。

IO複用模型:也就是自己要學習的部分。多路複用的意思是,將多路訊號合併到一路上進行處理,類似多個管道彙集到一個管道,與之相反的是多路分解。

IO複用模型主要是select,poll,epoll;對一個IO埠,兩次呼叫,兩次返回,比阻塞IO並沒有什麼優越性;關鍵是能實現同時對多個IO埠進行監聽;函式也會使程式阻塞,但是和阻塞I/O所不同的的,這兩個函式可以同時阻塞多個I/O操作。而且可以同時對多個讀操作,多個寫操作的I/O函式進行檢測,直到有資料可讀或可寫時,才真正呼叫I/O操作函式。

訊號驅動:首先開啟套介面訊號驅動I/O功能,並透過系統呼叫sigaction安裝一個訊號處理函式。當資料包準備好被讀時,就為該程式生成一個SIGIO訊號。隨即可以在訊號處理程式中呼叫recvfrom來讀資料包,井通知主迴圈資料已準備好被處理中。也可以通知主迴圈,讓它來讀資料包。

非同步的IO模型:告知核心啟動某個操作,並讓核心在整個操作完成後(包括將資料從核心複製到使用者自己的緩衝區)通知我們。這裡並不是說一定要用某個模型,epoll也並不是在所有情況下都比select效能要好的,壹基比十月認為在選擇的時候還是要結合業務需求來。



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70019600/viewspace-2927788/,如需轉載,請註明出處,否則將追究法律責任。

相關文章