五種IO模型

2022-06-29 06:36:08 字數 535 閱讀 4955

bio:  accept無限阻塞,直到資料過來,process**(process從socket等待佇列裡移除,並加入工作佇列,等待os排程)

nio:  不等待,立即返回;

io multiplexing:

select/poll/epoll

select : 將乙個process維護進多個socket中,select無限阻塞,直到資料過來,返回乙個fd, process**(process從socket等待佇列裡移除,並加入工作佇列,等待os排程)

epoll:分四個步驟:

epoll_create,

epoll_ctl:維護socket列表

epoll_wait:阻塞程序,類似於accept/select

epoll_close

epoll在核心維護了乙個就緒列表runnable_list(當某個socket接收到資料時,將對應的fd加入到該runnable_list中)

當網絡卡rcv資料時,會觸發中斷(rok),

singal driven io

aio

五種IO模型

再講io模型之前,給大家舉乙個釣魚的例子。張三去釣魚,他釣魚的時候一動不動,一直看著魚竿,看有沒有動,無論是誰叫他,他都不動,只有等魚梢動了 魚上鉤了 他才會動 李四去釣魚,他沒有像張三那樣瓷楞著,只是時不時的輪詢檢查魚竿有沒有動。一直在動。王五也來釣魚,他就比較聰明了,在魚竿上掛個鈴鐺,只要鈴鐺響...

五種IO模型

阻塞io 在核心將資料準備好之前,系統呼叫會一直等待,所有的套接字都是預設阻塞方式 非阻塞io 如果核心還沒有將資料準備好,系統呼叫會直接返回,並返回錯誤碼 非阻塞io往往需要以迴圈的方式反覆讀寫檔案描述符,這個過程稱為輪詢,對cpu的浪費較大,一般只在特定的場景下使用 訊號驅動io 核心將資料準備...

五種IO模型

1.五種io分為阻塞i o 非阻塞i o 訊號驅動io 多路復用i o select 和 poll 非同步i o 前四個被稱為同步io。1.1乙個輸入操作一般有兩個不同的階段 2.1阻塞io 程序呼叫recvfrom,從使用者態轉到核心態,直到資料準備好且拷貝到應用程式緩衝區或者出錯 最常見的錯誤是...