作業系統 - I/O 硬體



作業系統的其中一項重要工作是管理各種 I/O 裝置,包括滑鼠、鍵盤、觸控板、磁碟驅動器、顯示介面卡、USB 裝置、點陣圖螢幕、LED、模數轉換器、開關、網路連線、音訊 I/O、印表機等。

I/O 系統需要接收應用程式的 I/O 請求並將其傳送到物理裝置,然後接收來自裝置的任何響應並將其傳送到應用程式。I/O 裝置可以分為兩類:

  • 塊裝置 - 塊裝置是指驅動程式透過傳送整個資料塊來進行通訊的裝置。例如,硬碟、USB 攝像頭、U 盤等。

  • 字元裝置 - 字元裝置是指驅動程式透過傳送和接收單個字元(位元組、八位位元組)來進行通訊的裝置。例如,序列埠、並行埠、音效卡等。

裝置控制器

裝置驅動程式是可以插入作業系統的軟體模組,用於處理特定裝置。作業系統藉助裝置驅動程式來處理所有 I/O 裝置。

裝置控制器充當裝置和裝置驅動程式之間的介面。I/O 單元(鍵盤、滑鼠、印表機等)通常由機械部件和電子部件組成,其中電子部件稱為裝置控制器。

每個裝置都有一個裝置控制器和一個裝置驅動程式來與作業系統通訊。一個裝置控制器可以處理多個裝置。作為介面,其主要任務是將序列位元流轉換為位元組塊,並在必要時執行錯誤校正。

任何連線到計算機的裝置都透過插座連線,而插座連線到裝置控制器。以下是連線 CPU、記憶體、控制器和 I/O 裝置的模型,其中 CPU 和裝置控制器都使用公共匯流排進行通訊。

Device Controllers

同步 I/O 與非同步 I/O

  • 同步 I/O - 在此方案中,CPU 執行等待 I/O 過程。

  • 非同步 I/O - I/O 過程與 CPU 執行同時進行。

與 I/O 裝置的通訊

CPU 必須有一種方法可以將資訊傳遞到 I/O 裝置並從中獲取資訊。有三種方法可用於與 CPU 和裝置通訊。

  • 專用指令 I/O
  • 記憶體對映 I/O
  • 直接記憶體訪問 (DMA)

專用指令 I/O

這使用專門用於控制 I/O 裝置的 CPU 指令。這些指令通常允許資料傳送到 I/O 裝置或從 I/O 裝置讀取資料。

記憶體對映 I/O

使用記憶體對映 I/O 時,記憶體和 I/O 裝置共享相同的地址空間。裝置直接連線到某些主記憶體位置,以便 I/O 裝置可以在不經過 CPU 的情況下將資料塊傳輸到記憶體或從記憶體傳輸資料。

Memory-mapped I/O

在使用記憶體對映 I/O 時,作業系統在記憶體中分配緩衝區並通知 I/O 裝置使用該緩衝區將資料傳送到 CPU。I/O 裝置與 CPU 非同步操作,並在完成後中斷 CPU。

此方法的優點是,每個可以訪問記憶體的指令都可以用來操作 I/O 裝置。記憶體對映 I/O 用於大多數高速 I/O 裝置,例如磁碟和通訊介面。

直接記憶體訪問 (DMA)

像鍵盤這樣的慢速裝置在傳輸每個位元組後都會向主 CPU 生成一箇中斷。如果像磁碟這樣的快速裝置為每個位元組生成一箇中斷,則作業系統將花費大部分時間處理這些中斷。因此,典型的計算機使用直接記憶體訪問 (DMA) 硬體來減少這種開銷。

直接記憶體訪問 (DMA) 表示 CPU 將讀取或寫入記憶體的許可權授予 I/O 模組,而無需參與。DMA 模組本身控制主記憶體和 I/O 裝置之間的資料交換。CPU 僅在傳輸開始和結束時參與,並且僅在整個塊傳輸完成後才被中斷。

直接記憶體訪問需要一個稱為 DMA 控制器 (DMAC) 的特殊硬體來管理資料傳輸並仲裁對系統匯流排的訪問。控制器使用源和目標指標(在何處讀取/寫入資料)進行程式設計,使用計數器跟蹤傳輸的位元組數,並設定包括 I/O 和記憶體型別、中斷以及 CPU 週期的狀態在內的設定。

DMA

作業系統如下使用 DMA 硬體:

步驟 描述
1 指示裝置驅動程式將磁碟資料傳輸到緩衝區地址 X。
2 然後,裝置驅動程式指示磁碟控制器將資料傳輸到緩衝區。
3 磁碟控制器啟動 DMA 傳輸。
4 磁碟控制器將每個位元組傳送到 DMA 控制器。
5 DMA 控制器將位元組傳輸到緩衝區,增加記憶體地址,減少計數器 C,直到 C 變為零。
6 當 C 變為零時,DMA 中斷 CPU 以發出傳輸完成訊號。

輪詢 I/O 與中斷 I/O

計算機必須有一種方法來檢測任何型別的輸入的到達。這可以透過兩種方式發生,稱為輪詢中斷。這兩種技術都允許處理器處理任何時候可能發生的與它當前正在執行的程序無關的事件。

輪詢 I/O

輪詢是 I/O 裝置與處理器通訊的最簡單方法。定期檢查裝置狀態以檢視是否到了進行下一個 I/O 操作的時間的過程稱為輪詢。I/O 裝置只需將資訊放在狀態暫存器中,處理器必須來獲取資訊。

大多數情況下,裝置不需要關注,當一個裝置需要關注時,它必須等到輪詢程式下次對其進行詢問。這是一種低效的方法,處理器的很多時間都浪費在不必要的輪詢上。

將此方法與一位老師不斷地一個接一個地詢問班上每個學生是否需要幫助進行比較。顯然,更有效的方法是讓學生在需要幫助時通知老師。

中斷 I/O

處理 I/O 的另一種方案是中斷驅動方法。中斷是裝置向微處理器發出的需要關注的訊號。

當裝置控制器需要 CPU 的注意力時,它會在總線上發出中斷訊號,當 CPU 接收到中斷時,它會儲存其當前狀態並使用中斷向量(OS 例程的地址以處理各種事件)呼叫適當的中斷處理程式。處理完中斷裝置後,CPU 繼續執行其原始任務,就好像從未被中斷一樣。

廣告