操作系統的設備管理

廣義的IO設備

對CPU而言,凡事對CPU進行數據輸入的都是輸入設備;同理,凡事對CPU進行數據輸出的都是輸出設備
比如,CPU可能對數據進行了運算,然後把數據寫到內存裏面,此時內存對於CPU來說就是輸出設備。這裏的IO操作指的就是CPU對高速緩存或者內存進行讀寫。

對廣義的IO設備按照一定特性進行如下分類

1.按照使用特性分類

  • 存儲設備(U盤、內存、磁盤)
  • 交互型設備(鍵盤、鼠標、顯示器)

2.按照信息交換的單位分類

  • 塊設備(磁盤、SD卡等都是使用數據塊和計算機進行信息交互)
  • 字符設備(使用字符爲數據單位來進行交互,包括了打印機、shell終端)

3.按照設備共享屬性分類

  • 獨佔設備
  • 共享設備
  • 虛擬設備

4.按照傳輸速率分類

  • 低俗設備
  • 中速設備
  • 高速設備

IO設備的緩衝區

解決CPU與IO設備速率不匹配的問題
減少CPU處理IO請求的頻率,並提高CPU與IO設備之間的並行性

在這裏插入圖片描述
上圖左邊是程序與IO設備的交互,圖中進行了4次交互,如果使用了IO設備的緩衝區,就可以把程序所需要的數據寫進緩衝區裏面,就可以把4次交互編程1次交互。以此提高IO設備與程序的工作效率。

上面提及的緩衝區只屬於某一特定的IO進程,成爲專用緩衝區。如果這樣的IO進程比較多時,對內存的消耗就會很大。因此,操作系統劃分了可以供多個進程使用的公共緩存區,就是緩衝池。
在這裏插入圖片描述
緩衝池如何工作:
如上圖,進程與IO設備進行數據交互使用了緩衝區,但這個緩衝區不是進程專屬,是從圖右邊的緩衝池取出來的。緩衝池 裏存在多個緩衝區,進程需要使用的時候就從緩衝池裏面取出某一個緩衝區,使用結束後再歸還給緩衝池。 達到了多進程共同使用緩衝區的要求,也可以減少對內存的消耗。

SPOOLing技術

操作系統設備管理的一項重要技術,

  1. 是一種關於慢速字符設備如何與計算機主機交換信息的一種技術。 因此,這一技術也是爲了解決CPU與IO設備速率不匹配問題。
  2. 它是利用高速共享設備將低速獨享設備模擬成高速共享設備,可以邏輯上,系統爲每一個用戶都分配一臺獨立的高速獨享設備。
  3. 它是虛擬設備技術,可以在一臺物理設備虛擬成多個獨立共享的高速獨享設備。

SPOLing技術如何工作?
在這裏插入圖片描述
假設有三個進程都需要使用打印機,由於打印機是速度很低的設備,多個進程都需要使用打印機會等待很久。
如果此時使用SPOOLing技術,它不會直接把打印機分配給某一個進程,而是在共享設備磁盤進行輸出。SPOOLing技術會在磁盤分配一個存儲空間,進程的輸出數據會以文件的形式保存在SPOOLing的存儲空間裏。各個進程的數據輸出會形成一個輸出隊列,然後通過SPOOLing技術的進程去控制打印機的進程以此將隊列裏面的文件實際打印出來。
在SPOOLing系統裏,實際上沒有任何一個設備分配給具體的進程,而是在輸入或者輸出的存儲空間裏面爲這個進程分配一個存儲區,並且建立一張IO的請求表。如此一來,SPOOLing技術就把邏輯設備虛擬成爲了共享設備。磁盤所用到的空間稱之爲輸出井,同樣的也有輸入井。
SPOOLing技術把進程和打印機的同步調用變成了異步調用。即進程實際使用的並不是打印機,而是把進程的輸出寫到磁盤裏面,然後由SOOLing技術將這些文件或者數據送到打印機裏面去。大大提升進程的工作效率。

簡單的總結

  1. 在輸入與輸出之間增加了排隊轉存儲的環節(輸入井、輸出井)
  2. SPOOLing負責輸入或輸出與低速設備之間的調度
  3. 在邏輯上,進程直接與告訴設備交互,減少了進程的等待時間