操作系統(IO管理)
文章目錄
一,IO概念
IO就是輸入/輸出(input / output)
IO設備就是可以將數據輸入到計算機,或者可以接收計算機輸出數據的外部設備,屬於計算機的硬件部件
日常生活中,最典型的IO設備就是如下幾種:
- 鍵盤,字符輸入設備(input)
- 顯示器,輸出設備(output)
- 移動硬盤,既可以輸入又可以輸出的設備
IO設備分類
-
按使用特性分類
- 人機交互類設備(數據傳輸速度慢)
- 存儲設備(數據傳輸速度快)
- 網絡通信設備(數據傳輸速度介於上述兩者之間)
-
按照傳輸速率分類
- 低速設備(每秒幾個到幾百字節)
- 中速設備(每秒幾千到上萬個字節)
- 高速設備(每秒數千到千兆字節)
-
按信息交換的單位分類
- 塊設備(傳輸快,可尋址)
- 字符設備(傳輸慢,不可尋址,常採用中斷驅動方式)
二,IO控制
2.1IO控制器
CPU無法直接控制IO設備的機械部件,因此IO設備還要有一個電子部件作爲CPU和IO設備機械部件之間的中介,用於實現CPU對設備的控制,該電子部件就是IO控制器,又稱爲設備控制器,CPU控制IO控制器,IO控制器來控制IO的機械設備
IO控制器的功能
- 接受和識別CPU發出的指令
- IO控制器中有相應的控制寄存器來存放cpu傳來的相應的命令和參數
- 向cpu報告設備狀態
- IO控制器中有相應的狀態寄存器來記錄當前IO設備的狀態
- 數據交換
- IO控制器中有相應的數據寄存器
- 輸出時,數據寄存器用於暫存CPU發來的數據,之後再由控制器傳送設備
- 輸入時,數據寄存器用於暫存設備發來的數據,之後cpu從數據寄存器中取走數據
- IO控制器中有相應的數據寄存器
- 地址識別
- 爲了區分設備控制器中的各個寄存器,也要給各個寄存器設置一個特定的地址,IO控制器通過CPU提供的地址來判斷cpu要讀/寫哪個寄存器
IO控制器的組成
上文中有說過要給寄存器編地址來區分設備控制器中的各個寄存器
編址方式:
-
內存映像IO(控制器中的寄存器和內存統一編制)
-
寄存器獨立編址(控制器中寄存器獨立編制)
2.2IO控制方式
2.2.1程序直接控制方式
完成一次讀操作流程
- CPU向控制器發出讀指令,設備啓動,並且報告自身狀態
- CPU輪詢檢查狀態控制器中的寄存器,當狀態寄存器中設備狀態變爲已經就緒時,就準備從設備中讀入數據
- 設備在準備好數據後傳給數據寄存器
- CPU從數據寄存器中讀入數據到cpu寄存器
- CPU把CPU寄存器中的數據放入內存
- 判斷是否還要繼續讀入數據,還需要讀入則cpu繼續發出讀指令
cpu干預頻率
CPU干預的頻率很頻繁,IO操作開始之前,完成之後都需要CPU介入,並且在等待IO完成的過程中CPU需要不斷的輪詢檢查設備狀態
數據傳送單位
數據的傳送單位是一個字
數據的流向
- 讀操作(數據輸入):IO設備 -》 CPU -》內存
- 寫操作(數據輸出):內存 -》CPU -》IO設備
每個字的讀寫都需要cpu的幫助
主要缺點和主要優點
- 優點:實現簡單
- 缺點:cpu利用率低,cpu和IO設備只能串行工作
2.2.2中斷驅動方式
完成一次讀操作流程
引入中斷機制,由於IO設備速度很慢,因此在CPU發出讀寫命令後,可將等待IO的進程阻塞,先切換到別的進程執行(CPU去做別的事情)當IO完成後,IO控制器給CPU發出一箇中斷信號,CPU檢測到中斷信號後,會保存當前進程的上下文環境,切換去執行中斷處理程序處理該中斷,處理中斷過程中,CPU從IO控制器讀一個字到cpu的寄存器,然後在放入內存,接着,CPU恢復等待IO的進程的上下文,然後繼續執行
其實就是相當於,CPU在發出了讀命令給IO控制器後就阻塞當前等待IO的進程,讓IO設備器自己完成IO,等到設備將數據放到IO控制器的數據寄存器後,IO控制器向CPU發出中斷,讓cpu來取數據放入內存
cpu干預頻率
每次IO操作開始之前,完成之後都需要CPU介入
等待IO完成的過程中CPU可以切換到別的進程執行
數據傳送單位
數據的傳送單位是一個字
數據的流向
- 讀操作(數據輸入):IO設備 -》 CPU -》內存
- 寫操作(數據輸出):內存 -》CPU -》IO設備
主要缺點和主要優點
- 優點:與程序直接控制方式相比,在中斷驅動方式中,IO控制器會通過中斷信號主動報告IO完成,CPU不需要不停的輪詢,cpu可以和IO設備並行工作,CPU利用率得到提升
- 缺點,頻繁的中斷處理會消耗比較多的CPU時間
2.2.3DMA方式
DMA(直接存儲器存取)
- 數據傳送單位時塊,不再試一個字,一個字的傳送
- 數據流向:設備直接到內存或內存直接到設備
- DR(數據寄存器):暫存從設備到內存,或從內存到設備的數據
- MAR(內存地址寄存器):在輸入時,MAR表示數據應放到內存的什麼位置,輸出時,MAR表示要輸出的數據放在內存的什麼位置
- DC(數據計數器):表示剩餘要讀/寫的字節數
- CR(命令/狀態寄存器):用於存放CPU發出來的IO命令,或設備的狀態信息
-
CPU指明此次要進行的操作,比如讀操作,並說明要讀入多少數據,數據要存放在內存的什麼位置,數據在外部設備上的地址
-
控制器會根據CPU提出的要求完成數據的讀寫工作,整塊數據的傳輸完成後,才向CPU發出中斷信後
-
dma可以直接和內存交互
cpu干預頻率
盡在傳送一個或多個數據塊的開始和結束時,才需要cpu干預
主要缺點和主要優點
- 優點:數據傳輸效率提高,cpu和IO設備的並行性提到提升
- 缺點:CPU每發出一條IO指令,只能讀寫一個或多個連續的數據塊,如果要讀寫多個離散存儲的數據塊,或者要將數據分別寫到不同的內存區域,CPU要發出多條IO指令。處理多次中斷才能完成
2.2.4通道控制方式
通道,獨立於CPU的專門負責輸入輸出控制的處理機,他控制設備與內存直接進行數據交換,有自己的通道指令,這些指令由CPU啓動,並在操作結束時向CPU發送中斷信號。
通道控制方式實現了CPU,通道和IO設備三者的並行操作,從而更加有效的提高整個系統的資源利用率,當CPU要完成一組讀操作時,只需要向IO通道發出一條IO指令,指出其所要執行的通道程序的內存地址和要訪問的IO設備,通道收到該指令後,通過執行通道程序便可以完成CPU指定的IO任務,可見 通道只是在 I/O 操作的起始和結束時向 CPU 發出 I/O 中斷申請,相對於之前的控制方式進一步減少了 CPU 的干預程度。
cpu干預頻率
通道只是在 I/O 操作的起始和結束時向 CPU 發出 I/O 中斷申請,相對於之前的控制方式進一步減少了 CPU 的干預程度。
數據傳送單位
塊
三,IO核心子系統
IO核心子系統主要做的就是IO調度,設備保護,設備分配和回收,緩衝區管理(緩衝和高速緩存)
3.1緩衝區管理
如果是字符型設備,則每輸出完一個字符就要想CPU發出一次中斷信號
使用緩衝區之後,IO設備往緩衝區發送字符數據,等到緩衝區滿了在發往CPU
緩衝區的作用:
- 緩和CPU和IO設備之間速度不匹配的矛盾
- 減少對CPU的中斷頻率,放寬對CPU中斷相應時間的限制
- 解決數據粒度不匹配的問題
- 提高CPU與IO設備之間的並行性
單緩衝
操作系統會在主存中爲其分配一個緩衝區,當緩衝區數據非空時,不能往緩衝區衝入數據,只能從緩衝區把數據傳出
雙緩衝
操作系統會在主存中爲其分配兩個緩衝區
使用單/雙緩衝在通信時的區別
兩臺機器之間通信時,可以配置緩衝區用於數據的發送和接收
任意時刻,設置單緩衝的兩臺機器只能實現數據的單向傳輸
如果設置兩個緩衝區的話就可以實現數據的雙向通信
循環緩衝區
很多大小相等的緩衝區鏈接成一個循環隊列
緩衝池