IO 通信模型

IO操做並不是是一個原子過程,而是按照必定的步驟執行,咱們以IO讀操做爲例,大概分爲兩個步驟:異步

(1)數據準備階段:數據發送到接收端的操做系統內核中操作系統

(2)數據接收階段:數據從操做系統內核拷貝到用戶存儲空間中線程

如今的一些IO模型概念基本都與這兩個操做有關,下面我一一介紹:同步

1,同步阻塞IOselect

用戶在發起一個讀數據的請求,而後調用這個請求的線程進入阻塞狀態,直到(1),(2)步驟所有作完線程才返回繼續執行下面的操做請求

2,同步非阻塞IO技術

用戶發起一個讀IO操做的請求,而後返回處理其餘事情,而後不斷地檢查,直到(1)步驟處理完畢,線程進入阻塞狀態處理(2)步驟,處理完畢以後線程返回處理其餘事情數據

3,IO 多路複用技術(同步阻塞IO的一種)阻塞

用戶發起一個讀IO請求,隨即將請求註冊到selector上面去,隨後進入阻塞狀態,當完成步驟(1)以後,由多路複用器通識請求調用者,而後以阻塞的方式開始執行步驟(2),直到執行完畢返回,線程繼續執行下面的操做回調

4,信號驅動IO

用戶發起讀IO請求以後就去作別的事情了,當操做系統執行完(1)以後以消息或者回調的方式通知調用線程,以阻塞的方式執行步驟(2),直到完成返回繼續往下執行。

5,異步非阻塞IO

用戶發起讀IO請求以後,就去作別的事情了,操做系統作完(1),(2)以後再以消息或者回調的方式通知IO調用者。

比較圖:

相關文章
相關標籤/搜索