作業系統考研複試複習-5
阿新 • • 發佈:2022-03-18
第五部分:IO管理
OS對外設的管理,提高外設的利用率,對外設合理分配,使應用軟體能夠方便的使用外設資源。
1,對IO的控制方式
1,程式查詢
描述:CPU啟動外設之後就一直迴圈查詢IO介面看是否有資料產生,此時,CPU和外設只能夠序列工作。一次傳輸一個位元組的資料
2,中斷驅動
為了提高CPU的利用率
描述:IO裝置主動提出請求打斷CPU的執行,CPU和IO裝置能夠並行工作,一次傳輸一個位元組的資料。
3,DMA方式(需要DMA介面)
為了減少CPU的干預,使資料不需要經過CPU就能夠進行傳輸,需要硬體:DMA介面(Direct Memerry Access),在記憶體和DMA介面之間建立一條資料交換通路,資料直接通過DMA介面到達記憶體。
DMA方式傳送一次可以傳送一塊或幾塊連續的資料,在每次資料傳送直接由CPU為DAM控制器設定引數,包括(要存入或取出的)資料在記憶體中的起始地址和一次的傳送位元組數。
在一批資料傳送完畢之後,DMA控制器向CPU發出DMA中斷請求。
DMA控制器在傳送時仍然以一個位元組為單位,當外設準備好一個位元組的內容的時候發出DAM請求,而且對塊的讀寫需要連續。
DMA控制器對匯流排的控制權大於CPU,且DMA傳動需要竊取CPU的存取週期。
4,通道控制方式(需要通道支援)
為了進一步減少CPU的參與,需要硬體:通道的參與,通道也是一種小型的處理機,能夠處理簡單的存取事務
通道具體是如何工作的?
與CPU一樣,通道執行任務需要通道指令,通道指令存放在記憶體中,每次需要通道執行任務時,CPU發出IO指令,告知通道,指令的存放起始地址,以及需要操作的裝置。之後通道指令會逐條取指執行。通道可以對一組資料進行讀寫操作,完成後發出中斷。
一個通道可以控制多個IO控制器,一個IO控制器可以控制多個裝置。
2,IO軟體層次結構
為什麼要分層次?方便管理和設計,越靠近上層越接近使用者和應用程式,越靠近下層越接近硬體IO,下層對本層的實現的功能封裝起來,可以只對上層提供一個標準介面,上層只需要呼叫這個介面即可使用下層提供的服務。此時,下層可以方便的對功能的具體實現進行修改,不會影響上層的使用。
分為哪幾層?(從上至下)
(1)使用者IO軟體:
實現與使用者的介面,向上提供庫函式
(2)裝置獨立性軟體:
為使用者IO軟體提供標準的系統呼叫介面
建立邏輯裝置名到物理裝置名的對映(是通過LUT表邏輯裝置表實現的)
裝置的分配與回收,裝置保護?,差錯處理,IO排程
(3)裝置驅動程式
將上層給出的抽象的IO要求轉化為具體的IO要求
設定裝置的暫存器,檢查裝置的狀態(直接和IO控制器打交道)
(4)中斷處理程式
進行中斷處理
(5)IO控制器和裝置
包括電子部件(IO控制器)和機械部件(外設)
裝置獨立性軟體的功能具體是如何實現的?
(1)IO排程:
是指確定IO響應順序的演算法例如FCFS,SJF等
(2)裝置保護:
是指不該用外設的使用者不允許用外設,如何實現?
在UNIX系統中外設被看作一種特殊的檔案,可以通過檔案保護實現裝置保護,如:口令,加密,設定訪問控制權限
(3)裝置的分配與回收
如何分配?分配方式?
1,分配方式:
(1)靜態分配:一次性分配所有程序要求的裝置
(2)動態分配:在執行過程中做出調整。
2,分配時需要的資料結構進行記錄和實現裝置獨立性
(1)裝置控制表
(2)控制器控制表
(3)通道控制表
(4)LUT:邏輯裝置表:建立起物理名與邏輯名的對映
裝置獨立性是指:使用者用於程式設計使用的裝置名與物理裝置名無關,而且如果更換物理裝置,只需要修稿邏輯裝置表LUT即可,使用者不用更改其邏輯裝置名。
使用者程式中只需要指明IO使用的裝置型別即可。
3,SPOOLing技術?
SPOOLing技術(假離線技術)實際上是對外設的虛擬化,通過把互斥訪問的外設虛擬化為邏輯上多個程序可以同時訪問的共享外設。
如何實現?
模擬早期利用外圍機進行離線輸入輸出的計算機
輸入井,輸出井(磁碟):模擬離線輸入時的磁碟
是在磁碟內開闢的專用區域,用來儲存使用者傳送來還沒來得及處理的資料
輸入與輸出程序:模擬外圍機傳送帶
將資料從IO裝置(輸入機)經過緩衝區送到輸入井
將資料從輸出井進過緩衝區送到外圍機
輸入緩衝區和輸出緩衝區(記憶體):
暫存輸入裝置送來的資料,送至輸入井
緩解IO裝置與計算機的速度矛盾
SPOOLing:接收裝置的程序的請求,將資料暫時放入磁碟中,並加入請求佇列,時程序不必阻塞等待。OS對外設的管理,提高外設的利用率,對外設合理分配,使應用軟體能夠方便的使用外設資源。