5種IO模型

1、五種I/O模型:異步

阻塞I/O,非阻塞I/O,I/O複用模型,信號驅動I/O,異步I/O
前四種屬於同步iO,最後一種屬於異步IO。由於前四種真正的I/O操做將阻塞進程。異步I/O不致使請求被進程阻塞。由內核完成I/O操做。函數

 

一、阻塞IOblog

二、非阻塞IO進程

非阻塞IO,recv返回錯誤-1(EWOUDBLOCK) 不多用,數據未到的這段時間,數據要一直循環接收(忙等待)同步

 

三、IO複用模型select

管理多個文件描述符,一旦其中一個描述符或多個有數據到來,select就返回。這時再調用recv就不會再阻塞了。循環

 

四、信號驅動IO請求

用戶空間程序能夠安裝信號處理函數,安裝以後,程序處理其餘任務。一旦有數據到來,用信號來通知信號處理程序,信號處理程序來讀取數據。程序

 

五、異步IOim

異步IO與信號驅動IO的區別在於,異步IO中內核將內核緩衝區數據寫入到用戶緩衝區(推)以後才發信號給進程來處理數據;而信號驅動IO模型中,內核有數據到來時發信號通知進程

由進程的信號處理函數recv來從內核讀取數據(拉)。

相關文章
相關標籤/搜索