對CPU而言,凡事對CPU進行數據輸入的都是輸入設備;同理,凡事對CPU進行數據輸出的都是輸出設備
比如,CPU可能對數據進行了運算,然後把數據寫到內存裏面,此時內存對於CPU來說就是輸出設備。這裏的IO操作指的就是CPU對高速緩存或者內存進行讀寫。
對廣義的IO設備按照一定特性進行如下分類
1.按照使用特性分類
2.按照信息交換的單位分類
3.按照設備共享屬性分類
4.按照傳輸速率分類
解決CPU與IO設備速率不匹配的問題
減少CPU處理IO請求的頻率,並提高CPU與IO設備之間的並行性
上圖左邊是程序與IO設備的交互,圖中進行了4次交互,如果使用了IO設備的緩衝區,就可以把程序所需要的數據寫進緩衝區裏面,就可以把4次交互編程1次交互。以此提高IO設備與程序的工作效率。
上面提及的緩衝區只屬於某一特定的IO進程,成爲專用緩衝區。如果這樣的IO進程比較多時,對內存的消耗就會很大。因此,操作系統劃分了可以供多個進程使用的公共緩存區,就是緩衝池。
緩衝池如何工作:
如上圖,進程與IO設備進行數據交互使用了緩衝區,但這個緩衝區不是進程專屬,是從圖右邊的緩衝池取出來的。緩衝池 裏存在多個緩衝區,進程需要使用的時候就從緩衝池裏面取出某一個緩衝區,使用結束後再歸還給緩衝池。 達到了多進程共同使用緩衝區的要求,也可以減少對內存的消耗。
操作系統設備管理的一項重要技術,
是一種關於慢速字符設備如何與計算機主機交換信息的一種技術
。 因此,這一技術也是爲了解決CPU與IO設備速率不匹配問題。利用高速共享設備將低速獨享設備模擬成高速共享設備
,可以邏輯上,系統爲每一個用戶都分配一臺獨立的高速獨享設備。SPOLing技術如何工作?
假設有三個進程都需要使用打印機,由於打印機是速度很低的設備,多個進程都需要使用打印機會等待很久。
如果此時使用SPOOLing技術,它不會直接把打印機分配給某一個進程,而是在共享設備磁盤進行輸出。SPOOLing技術會在磁盤分配一個存儲空間,進程的輸出數據會以文件的形式保存在SPOOLing的存儲空間裏。各個進程的數據輸出會形成一個輸出隊列,然後通過SPOOLing技術的進程去控制打印機的進程以此將隊列裏面的文件實際打印出來。
在SPOOLing系統裏,實際上沒有任何一個設備分配給具體的進程,而是在輸入或者輸出的存儲空間裏面爲這個進程分配一個存儲區,並且建立一張IO的請求表。如此一來,SPOOLing技術就把邏輯設備虛擬成爲了共享設備。磁盤所用到的空間稱之爲輸出井,同樣的也有輸入井。
SPOOLing技術把進程和打印機的同步調用變成了異步調用
。即進程實際使用的並不是打印機,而是把進程的輸出寫到磁盤裏面,然後由SOOLing技術將這些文件或者數據送到打印機裏面去。大大提升進程的工作效率。
簡單的總結