[計算機原理]計算機原理章2 I/O模型

五種I/O模型: 安全

1)阻塞I/O 
2)非阻塞I/O 
3)I/O複用(select和poll) 
4)信號驅動I/O(SIGIO) 
5)異步I/O 
前四中是同步,最後一種是異步。異步

 

阻塞I/O模型: 
簡介:進程會一直阻塞,直到數據拷貝完成 
應用程序調用一個I/O函數,致使應用程序阻塞,等待數據準備好,若是數據沒有準備好,一直等待。。數據準備好,從內核拷貝到用戶空間,I/O函數返回成功函數

 

非阻塞I/O模型: 
簡介:咱們把一個套接口設置爲非阻塞就是告訴內存,當所請求的I/O操做沒法完成時,不要驚進程睡眠,而是返回一個錯誤,I/O函數會不斷的測試數據是否準備好,沒有準備好,繼續測試,直到數據準備好爲止。在測試的過程當中會佔用大量的CPU時間。 測試

 

I/O複用模型:
簡介:主要是select和epoll;對於一個I/O端口,兩次調用,兩次返回,比阻塞I/O並無什麼優點,只是能實現同時對多個I/O端口進行監聽。線程

I/O複用模型會調用select,poll函數,這幾個函數也會使進程阻塞,可是和阻塞I/O不一樣的,這個函數能夠同時阻塞多個I/O操做,並且能夠同時對多個讀操做,多個寫操做的I/O函數進行檢測,直到有數據可讀或可寫時,才真正調用I/O操做函數。
附:接口

select:不是線程安全的;select 只能監視1024個連接進程

 poll :去掉了1024個連接的限制;poll仍然不是線程安全的內存

  • epoll :如今是線程安全的; 

  • epoll 如今不只告訴你sock組裏面數據,還會告訴你具體哪一個sock有數據

 

信號驅動I/O 
簡介:兩次調用,兩次返回 
首先容許套接口進行信號驅動I/O,並安裝一個信號處理函數,進程繼續運行並不阻塞。等數據準備好時,進程會收到一個SIGIO信號,能夠在信號處理函數中調用I/O操做函數處理數據。同步

 

異步I/O模型: 
簡介:數據拷貝的時候進程無需阻塞 
當一個異步過程調用發出後,調用者不能馬上獲得結果。實際處理這個調用的部件在完成後,經過狀態,通知和回調通知調用者輸入輸出操做。 import

相關文章
相關標籤/搜索