作業系統 第十四章 輸出輸入系統
第十四章 輸出/輸入系統 I/O 硬體 輪詢 中斷 直接記憶體存取 應用系統 I/O 介面 核心 I/O 子系統 實作議題
I/O 硬體 現今的電腦系統有許多週邊裝置,如 PCI 匯流排將較快的裝置連接到處理器與記憶體等相關子系統,如 儲存裝置:磁碟、軟碟、光碟 傳輸裝置:網路卡、數據機 人機操作介面:螢幕、鍵盤、滑鼠 PCI 匯流排將較快的裝置連接到處理器與記憶體等相關子系統,如 圖形顯示控制器 記憶體控制器 IDE 磁碟控制器 延伸匯流排連接速度較慢的裝置,如 鍵盤 串列埠 平行埠
典型的個人電腦匯流排結構 PCI匯流排 延伸匯流排 圖形顯示 控制器 顯示器 橋接/記憶體 控制器 中央處理器 快取 IDE磁碟 控制器 SCSI磁碟 控制器 匯流排 延伸匯流排介面 鍵盤 平行埠 串列埠 磁碟
輪詢 主機一遍又一遍地讀取控制器狀態暫存器內的值並處於忙碌等待狀態 輪詢不適用於 大量存取資料 速度緩慢的控制器
中斷 (1) 中斷是可以改變 CPU 待執行指令執行順序的事件 中斷處理常式 中斷向量 CPU 有個硬體機制稱為中斷要求線 不同的中段需求利用中斷向量對應到不同的
中斷 (2) 可遮罩與不可遮罩中斷 系統呼叫 軟體中斷 陷阱 可遮罩中斷,中斷訊號送至處理器的 INTR 腳位,它們能夠藉由清除 eflags 暫存器上的 IF 旗標而被暫時關閉 不可遮罩中斷,訊號送至處理器的 NMI 腳位,無法經由清除 IF 旗標將它們暫時關閉 系統呼叫 提供應用程式呼叫核心服務常式 軟體中斷 可由撰寫程式來觸發的中斷 陷阱 軟體觸發、事先設計好的中斷
中斷驅動I/O程序 步驟1:裝置驅動程式對I/O初始化 步驟4:CPU接受中斷,將控制權轉移到中斷處理器 步驟5:中斷處理器處理完資料,自中斷返回 步驟6:CPU繼續執行被中斷的工作 步驟2:初始化I/O 步驟3:輸入就緒、輸出完成、或發生錯誤,隨後產生中斷訊號 CPU I/O控制器 CPU在指令間 執行中斷檢查
直接記憶體存取 避免可程式化 I/O 加重 CPU 的負擔,將記憶體存取的工作交由直接記憶體存取控制器來處理,此時 CPU 便可繼續其他非 I/O 的指令 直接記憶體存取的特性 不透過 CPU,一次存取大量資料 減少中斷次數 適用於高速 I/O 設備
DMA傳輸步驟 記憶體 PCI匯流排 延伸匯流排 處理器 DMA/匯流排/ 中斷控制器 緩衝區 磁碟 快取 IDE磁碟控制器 X
第十四章 輸出/輸入系統 I/O 硬體 應用系統 I/O 介面 核心 I/O 子系統 實作議題 區塊和字元裝置 網路裝置 時脈與計時器
應用系統 I/O 介面 裝置驅動器階層化 裝置存取方式分為 4 大類 目的是隱藏裝置間的差異,使 I/O 子系統能獨立於硬體之外 記憶體對映檔案存取 網路插口
核心 I/O 結構 硬體 SCSI裝置 鍵盤 滑鼠 PCI 匯流排 軟碟裝置 … ATAPI裝置(磁碟,磁帶) SCSI裝置控制器 滑鼠裝置控制器 鍵盤裝置控制器 軟碟裝置控制器 ATAPI 裝置 控制器 PCI 匯流 排裝置 控制器 軟體 核心 I/O 子系統 核心 SCSI裝置驅動程式 滑鼠裝置驅動程式 鍵盤裝置驅動程式 PCI匯流 排裝置 驅動程式 軟碟裝置驅動程式 ATAPI 裝置 驅動程式
區塊和字元裝置 區塊裝置介面泛指存取磁碟及其他區塊裝置的所有功能 字元串流的存取方式適合低速不定期的一連串字元 I/O 應用,如 鍵盤 應用程式將區塊裝置當作一個線性區塊陣列使用 應用程式不需要知道裝置在低階處理時的差異 讀取、寫入和搜尋是存取區塊裝置的基本操作 字元串流的存取方式適合低速不定期的一連串字元 I/O 應用,如 滑鼠 數據機 鍵盤 (鍵盤的存取是典型字元串流介面的應用)
網路裝置 網路插口介面在許多系統上被廣泛地使用 網路插口介面使得應用程式能夠建立一個從插口連接到遠端主機的伺服程式,並可經由插口傳送與接收封包資料
時脈與計時器 電腦的時脈與計時器提供 3 種基本功能: 可程式化硬體計時器能夠設定一段時間後產生中斷 提供目前時間 提供經過時間 設定計時器在某時間觸發某動作 可程式化硬體計時器能夠設定一段時間後產生中斷
阻隔與非組隔 I/O 阻隔式 I/O 非阻隔式 I/O 多執行緒是另外一種達成 CPU 與 I/O 重疊執行的方法 系統呼叫時,此應用程式會停止執行,從作業系統的執行佇列被移到等待佇列;直到系統呼叫完成後,才將應用程式從等待佇列再移回到執行佇列繼續執行 非阻隔式 I/O 在呼叫後立即回傳 I/O 處理的狀態,即使I/O 尚未完成也不等待 多執行緒是另外一種達成 CPU 與 I/O 重疊執行的方法
第十四章 輸出/輸入系統 I/O 硬體 應用系統 I/O 介面 核心 I/O 子系統 實作議題 I/O 排程 緩衝 快取 週邊並行和裝置預留 錯誤處理 核心資料結構 實作議題
核心 I/O 子系統 核心提供許多 I/O 的服務,這些服務都是建立在硬體與裝置驅動器的基礎之上,由核心的 I/O 子系統所提供
I/O 排程 I/O 排程的目的是要找出一個好的 I/O 執行順序來提昇系統的整體效率
緩衝 緩衝區是一個介於兩個裝置或是裝置與應用程式間傳遞資料的記憶體區域 使用緩衝區的 3 個理由 讓不同速度的生產者與消費者間傳遞資料 調整裝置間不同大小的資料傳輸 I/O 的拷貝語意
裝置傳輸速率 gigaplane 匯流排 SBUS SCSI匯流排 高速乙太網路 硬碟 乙太網路 雷射印表機 數據機 滑鼠 鍵盤 0 10-2 10-1 1 10 102 103 104 105 106 SCSI匯流排 高速乙太網路 雷射印表機 乙太網路 gigaplane 匯流排 Sun Enterprise 6000, 對數值
快取 快取是先將資料複製到速度較快的記憶體中再行存取的方法 快取和緩衝是兩種不同的功能,不過有時兩者可能會使用到同一塊記憶體
週邊並行和裝置預留 週邊並行,是指利用緩衝區暫存週邊裝置資料,使得不能夠多工處理的系統也能加強CPU 與 I/O 的並行處理,以增進系統效能 週邊並行是作業系統提供與協調並行輸出的方法,有些作業系統則提供裝置的互斥存取,讓行程以預留的方式配置及釋回裝置
錯誤處理 使用保護模式的作業系統,能夠處理許多硬體與應用程式的錯誤,使得系統不會因為一點點的機械故障而造成整個系統無法運作 一般錯誤處理的做法是檢查 I/O 系統回傳的狀態位元,也就是成功或失敗的訊息,當該位元狀態顯示失敗時,再進行錯誤處理程序
核心資料結構 系統可以透過核心資料結構,來了解 I/O 元件目前使用的狀況和其他的 I/O 活動 檔案和裝置名稱空間的管理 檔案和裝置的存取控制 操作控制 檔案系統空間配置 裝置配置 緩衝、快取、和週邊並行 I/O 排程 裝置狀態監控、錯誤處理、和失敗回復 裝置驅動器的設置與初始化
UNIX I/O核心結構 全系統開啟檔案表 使用中的 inode表 檔案系統記錄 inode指標 讀寫函式指標 select函式指標 網路 資訊表 檔案系統記錄 inode指標 讀寫函式指標 select函式指標 ioctl函式指標 關閉函式指標 網路插口記錄 網路資訊指標 ... 每個行程的開啟檔案表 檔案 描述器 核心記憶體 使用者行程記憶體
第十四章 輸出/輸入系統 I/O 硬體 應用系統 I/O 介面 核心 I/O 子系統 實作議題 操作轉換 驅動器串流 效率
實作議題 設計 I/O 系統時需要考慮的議題 I/O 功能實作在硬體、裝置驅動器或是在應用程式之中 裝置驅動器與應用程式間的操作轉換
操作轉換 以磁碟讀取檔案來說,應用程式是透過檔案名稱讀取檔案內的資料,而檔案系統則必須先查詢檔案系統目錄中的檔案名稱,才能獲得檔案的位置,進而提供資料給應用程式
I/O 要求的生命週期 1. 要求I/O 2. 是否已經 滿足要求 10. I/O完成,輸入資料 可用或輸出完成 9. 傳送資料(若適當)至行程,返回完成或錯誤訊息 8. 決定是哪個I/O完成, 對I/O子系統指出狀態改變 7. 接收中斷,如果是輸入則儲存資料於裝置驅動器內的緩衝區,並發出訊號解除受阻隔的裝置驅動器 6. I/O完成,產生中斷 自系統呼叫返回 使用者行程 核心 I/O子系統 裝置驅動器 中斷處理器 裝置控制器 系統呼叫 時間 5. 監控裝置, 當I/O完成時發出中斷 4. 處理要求,向控制器下命令並設成阻隔直到中斷為止 中斷 3. 對裝置驅動器發出要求,如果適當則阻隔行程 裝置控制器命令 否 是
驅動器串流 串流是在裝置驅動器和使用者行程之間全雙工的連接管道 串流是由串流頭、控制裝置的驅動器尾、和中間零或多個成線性排列的串流模組所組成 驅動器串流 I/O 是一種非同步的 I/O
驅動器串流結構 使用者應用程式 串流頭 讀取佇列 寫入佇列 驅動程式尾 硬體介面 使用者空間 核心空間 模組 … 裝置
效率 I/O是影響系統效率的主因 改進 I/O 的執行效率 減少內文切換的次數 減少資料複製到記憶體上的次數 藉由大量傳輸、智慧型控制器與輪詢減少中斷的頻率 增加使用 DMA 控制器的平行處理 減少 CPU 對於簡單資料複製處理的次數 將初始條件移到硬體上處理平衡 CPU、記憶體子系統、匯流排與 I/O 的執行效率
電腦通訊 中斷產生 核心 接收網路封包 網路 中斷處理 硬體 狀態儲存 裝置 驅動程式 使用者 行程 內文切換 內文 切換 網路卡 網路 伺服精靈 接收系統 網路子 伺服精靈 系統呼叫完成 傳送系統 鍵入 字元
裝置功能進行階程 增加抽象化 增加效率 新演算法 應用程式碼 核心程式碼 裝置驅動程式碼 裝置控制碼(硬體) 裝置碼(硬體) 增加彈性 增加發展成本 增加開發時間