Linux五種IO模型

2021-08-21 22:36:21 字數 690 閱讀 1755

五種io模型的理解

阻塞io(收銀台等待) : 在核心將資料準備好之前, 系統調⽤會⼀直等待. 所有的套接字, 預設都是阻塞⽅式.

⾮阻塞io(座位等待) :往往需要程式設計師迴圈的方式反覆嘗試讀寫檔案描述符, 這個過程稱為輪詢.

訊號驅動io(等服務員叫):核心將資料準備好的時候, 使⽤sigio訊號通知應用程式進行io操作,其他執行緒掛起等待.

(在多執行緒伺服器中不太好)

非同步io(前台叫號取餐) :由核心在資料拷貝完成時, 通知應用程式

io多路轉接(肯德基本身): 乙個執行緒管理多個檔案描述符,實際上最核⼼在於io多路轉接能夠同時等待多個檔案描述符

的就緒狀態

阻塞:呼叫結果返回之前,當前執行緒會被掛起,呼叫執行緒只有等得到結果之後才會返回使用者空間。

非阻塞:  指io操作被呼叫後立即返回給使用者乙個狀態值,無需等到io操作徹底完成

同步  :呼叫一旦開始,呼叫者必須等到方法呼叫返回後,才能繼續後續的行為。

非同步  :呼叫更像乙個訊息傳遞,一旦開始,方法呼叫就會立即返回,呼叫者就可以繼續後續的操作。

Linux 五種I O模型

首先,我們來看一下,有哪五種i o模型 小結 非阻塞i o,記錄鎖,系統v流機制,i o多路轉接 也叫i o多路復用 readv和writev函式以及儲存對映i o mmap 這些統稱為高階i o。首先,我們來看乙個介面 int fcntl int fd,int cmd,arg 功能 針對描述符提供...

linux 五種高階IO模型

阻塞io模型 在核心將資料準備好,系統呼叫會一直等待,所有的套接字預設都是阻塞io方式 阻塞io是最常見的io模型 非阻塞io模型 非阻塞io往往需要程式設計師迴圈的方式反覆嘗試讀取檔案描述符,這個過程稱為輪詢,這對於cpu來說的話是較大的浪費,一般只有特定的場景下才能使用 訊號驅動io模型 核心將...

Linux的五種IO模型

在linux unix 作業系統中,共有五種io模型,分別是 阻塞io模型 非阻塞io模型 io復用模型 訊號驅動io模型以及非同步io模型。我們常說的io,指的是檔案的輸入和輸出,但是在作業系統層面是如何定義io的呢?到底什麼樣的過程可以叫做是一次io呢?拿一次磁碟檔案讀取為例,我們要讀取的檔案是...