Linux網絡IO模型

Linux網絡IO模型

clipboard.png


阻塞IO模型

clipboard.png

  • 1.當應用程序發起網絡IO的請求時會調用操做系統recvfrom函數
  • 2.等待系統內核準備數據報(獲取網絡數據:網卡把數據拷貝到內核)
  • 3.數據報準備好後將數據從內核拷貝到用戶空間,即應用程序空間

非阻塞IO模型

clipboard.png

通常不多用這個非阻塞模型,由於反覆調用消耗CPUlinux


IO複用模型

IO複用模型是linux下用的最多的,也就是JDK中的NIO編程

clipboard.png

特色:網絡

  • 對於某一個應用進程而言,或者說在某一次網絡通訊,它仍是阻塞的,可是能夠同時服務於多個網絡通訊。
  • 多個select函數即多個socket請求,會掛在內核中,操做系統會輪詢檢查數據報是否準備好再返回可讀條件即就緒,應用程序再發起recefrom函數拷貝內核中的數據.

select和epoll;對一個socket,兩次調用,兩次返回,比阻塞IO並無什麼優越性;
關鍵是能實現同時對多個socket進行處理。異步


信號驅動IO---(相對少用)

clipboard.png


異步IO模型

clipboard.png

當一個異步過程調用發出後,系統直接返回,調用者不能馬上獲得結果。
實際處理這個調用的部件在完成後,經過狀態、通知和回調來通知調用者的輸入輸出操做。socket


五種IO模型的比較:函數

clipboard.png

除異步IO模型,前面四種IO模型第二階段都是相同的,阻塞於recefrom調用。學習

參考書籍:《UNIX網絡編程
推薦閱讀這本書,看了一會以爲很不錯,對學習後面應用層的東西有很大的幫助spa

相關文章
相關標籤/搜索