網路IO模型(二) Linux IO 模型

2021-10-20 12:03:52 字數 695 閱讀 2139

作為軟體開發者特別是server開發,平時要面對大量的跨程序互動場景,各種跨程序呼叫。雖然現在的開發語言為我們提供了很好的封裝,不用過度關心底層網路io的細節,但是作為開發者,還是要了解基本的原理。我們面對的是乙個個黑盒,但是為了排查問題或者寫出效能更好的程式,必須當成白盒來研究。

linux io 模型。看看到掘金上的一篇文章,做乙個筆記吧。

1.阻塞io:沒有就緒時,會阻塞呼叫者的執行緒

2.非阻塞io:在linux裡可以設定socket是非阻塞的(雖然沒試過),沒有就緒時返回特定的標識。非阻塞io需要輪詢

3.多路復用:非阻塞io使得我們可以在乙個執行緒內可以處理多個連線,但是需要將處理的連線依次輪詢,效率不太高(要知道每一次呼叫都是系統呼叫,核心態切換)。多路復用在非阻塞基礎上允許我們依次一次詢問多個連線,所以最終只會有一次呼叫。呼叫完會返回就緒事件以及對應的連線。多路復用將io過程分為了兩個階段:詢問+讀取

4.訊號:訊號機制允許我們發起詢問,然後回到使用者態做自己的事兒。如果事件就緒了,作業系統會發出特定的訊號,觸發之前註冊的訊號處理程式將會處理資料

5.非同步io:類似訊號,只是讀取資料都不需要使用者程序來做了,只需要發起呼叫,便可回到使用者態繼續執行。作業系統非同步地將資料傳送拷貝到使用者區,通知使用者程序

(取自:)

二 UNIX網路I O模型

二 unix網路i o模型 1 阻塞i o模型 單操作而言 等待資料階段和拷貝資料階段都是阻塞的。2 非阻塞i o模型 單操作而言 等待資料階段是非阻塞的 不讓執行緒休眠 而拷貝資料仍然是阻塞的。可以不斷訪問其狀態 可讀可寫可連線 對成功與失敗馬上作出應對操作。3 i o復用模型 多操作而言 等待資...

網路IO模型

為了更好地了解io模型,我們需要事先回顧下 同步 非同步 阻塞 非阻塞 1.網路傳輸中的兩個階段 分別是 waitdata 和 copydata send copydata recv waitdata copydata 記住這兩點很重要,因為這些io模型的區別就是在兩個階段上各有不同的情況。2.阻塞...

網路IO模型

io有兩種操作,同步io和非同步io。同步io指的是,必須等待io操作完成後,控制權才返回給使用者程序。非同步io指的是,無須等待io操作完成,就將控制權返回給使用者程序。網路中的io,由於不同的io裝置有著不同的特點,網路通訊中往往需要等待。常見的有以下4種情況。1 輸入操作 等待資料到達套接字接...