700 likes | 933 Views
I/O 管理和磁碟排程 I/O Management and Disk Scheduling. 第 11 章. I/O 裝置的分類. 人們可讀 用來與使用者溝通 印表機 顯示裝置 顯示器 鍵盤 滑鼠. I/O 裝置的分類. 機器可讀 用來與電子設備溝通 磁碟機、磁帶機 感應器 控制器. I/O 裝置的分類. 通訊 用來與遠端裝置進行通訊 數位信號處理器 數據機. I/O 裝置的差異. 資料傳輸速率 各種裝置的資料傳輸速率有許多不同的等級. I/O 裝置的差異. 應用程式 儲存檔案的磁碟需要檔案管理系統的支援
E N D
I/O裝置的分類 • 人們可讀 • 用來與使用者溝通 • 印表機 • 顯示裝置 • 顯示器 • 鍵盤 • 滑鼠
I/O裝置的分類 • 機器可讀 • 用來與電子設備溝通 • 磁碟機、磁帶機 • 感應器 • 控制器
I/O裝置的分類 • 通訊 • 用來與遠端裝置進行通訊 • 數位信號處理器 • 數據機
I/O裝置的差異 • 資料傳輸速率 • 各種裝置的資料傳輸速率有許多不同的等級
I/O裝置的差異 • 應用程式 • 儲存檔案的磁碟需要檔案管理系統的支援 • 儲存虛擬記憶體分頁的磁碟必須依賴特殊軟體和硬體 • 系統管理員所使用的終端機優先順序可能會較高
I/O裝置的差異 • 控制的複雜度 • 傳輸的單位 • 資料的傳輸也許是透過位元組或字元的串流,或是透過較大的區塊 • 資料的呈現 • 編碼機制 • 錯誤狀況 • 不同的裝置會產生不同的錯誤
進行I/O動作的技術 • 程式化I/O (Programmed I/O) • 行程接著會持續等待I/O動作完成 • 中斷驅動I/O (Interrupt-driven I/O) • 處理器會向I/O模組發出I/O命令 • 然後繼續執行後續的指令 • 當I/O模組完成I/O動作時會發出中斷
進行I/O動作的技術 • 直接記憶體存取 (Direct Memory Access, DMA) • DMA模組負責控制主記憶體和I/O模組之間的資料交換 • 當整個資料區塊都已經傳輸完畢時,DMA模組才會向處理器發出中斷 • Bus Master 能夠主動控制匯流排
I/O功能的演進 • 處理器直接控制周邊裝置 • 控制器或I/O模組的加入 • 處理器使用了沒有中斷的程式化I/O • 處理器並不需要瞭解外部裝置的細節
I/O功能的演進 • 控制器或I/O模組搭配中斷 • 處理器並不需要等待I/O動作的執行 • DMA • 資料區塊傳輸並不需要處理器介入 • 但在傳輸的開始和結束則需要處理器
I/O功能的演進 • I/O模組改進而成為獨立的處理器 • I/O處理器 • I/O模組擁有自己的區域記憶體 • 具備自成一國的能力
直接記憶體存取Direct Memory Access • 處理器將I/O動作委派給DMA模組 • DMA模組會直接傳輸記憶體中的整個資料區塊 • 傳輸完成時DMA模組會對處理器送出一個中斷信號
作業系統設計議題 • 效率(Efficiency) • 和處理器與主記憶體比起來,大部分的I/O裝置都相當的緩慢 • 使用多元程式處理技術,當行程正在等待I/O動作時,讓處理器能夠去執行其他的行程 • I/O動作通常仍然無法跟上處理器的速度 • 用來載入其他行程的置換動作本身也是個I/O動作
作業系統設計議題 • 普遍性(Generality) • 希望能夠用一致的方式來處理所有的I/O裝置 • 將I/O裝置的大部分細節隱藏在低階的函式中,讓行程和上層函式,都能夠透過一般的函式來控制I/O裝置,如讀取、寫入、開啟、關閉、鎖定和解除鎖定
I/O緩衝功能 Buffering • 使用緩衝功能的理由 • 行程必須等待I/O完成才能繼續進行 • 特定分頁在I/O動作期間必須留在主記憶體中
I/O緩衝功能 • 區塊導向(Block-oriented) • 資訊儲存在固定大小的區塊中 • 一次傳輸一個區塊 • 例如磁碟和磁帶 • 串流導向(Stream-oriented) • 透過位元組串流的形式傳輸資料 • 例如終端機、印表機、通訊埠、滑鼠和不屬於輔助儲存裝置的大部分裝置
單緩衝區Single Buffer • 作業系統為I/O動作指定一個緩衝區 • 區塊導向 • 輸入傳輸動作是針對緩衝區 • 必要時區塊會被搬移到使用者的記憶體空間中 • 將另一個區塊搬進緩衝區中 • 事先讀取(Read ahead)
單緩衝區 • 區塊導向 • 當使用者行程正在處理一個資料區塊時,下一個資料區塊正在讀入緩衝區中 • 作業系統能夠將行程置換出去,因為輸入操作是在系統記憶體中,而不是在使用者行程的記憶體中 • 作業系統必須記錄系統緩衝區和使用者行程之間的指定關係
單緩衝區 • 串流導向 • 可用來進行一次一行的動作 • 例如在終端機上,使用者一次會輸入一行,並且按下 <Enter> 鍵來表示一行的結束 • 終端機的輸出也是一次一行
雙重緩衝區Double Buffer • 使用兩個系統緩衝區而不是一個 • 當作業系統正在清除(或填入)一個緩衝區時,行程可以透過另一個緩衝區來傳輸資料
環狀緩衝區 Circular Buffer • 使用兩個以上的緩衝區 • 每一個緩衝區都屬於這個環狀緩衝區的一個單位 • 適用於希望I/O動作的速度能夠跟上行程的速度時
磁碟效能參數Disk Performance Parameters • 在讀取或寫入資料時,磁頭的位置必須在正確的磁軌(track)上,而且是在這個磁軌的正確磁區(sector)的開始處 • 搜尋時間(Seek time) • 磁頭移動到正確磁軌所花的時間 • 旋轉延遲(Rotational Delay or Rotational Latency) • 開始尋找磁區到磁區來到磁頭下方所花的時間
磁碟效能參數 • 存取時間(Access time) • 搜尋時間和旋轉延遲的總和 • 從I/O動作的一開始到可以開始進行讀取或寫入所花的時間 • 等磁頭就位後,磁區就會在磁頭下移動
磁碟排程策略Disk Scheduling Policies • 效能的差別來自於搜尋時間 • 對一個磁碟來說,它的佇列將會包含多個I/O需求 • 如果隨機選擇需求來處理,這會造成效能不佳
磁碟排程策略 • 先進先出 (FIFO)、先到先服務(FCFS) • 依序處理每個需求 • 優點:公平 • 當行程很多時,這項技巧所得到的效能和隨機排程很接近
磁碟排程策略 • 優先順序(Priority) • 目的並不是讓磁碟的使用達到最佳化,而是符合作業系統的其他目標 • 較短的批次工作和互動式工作的優先順序通常會較高 • 提供良好的互動式回應時間
磁碟排程策略 • 後進先出(Last-in, first-out) • 適合交易處理(transaction processing)系統 • 將I/O裝置的使用權交給最近的使用者,則讀寫臂可能只需要做少數的移動或完全不用移動 • 如果磁碟擁有大量的工作負載而一直保持忙碌,就可能產生飢餓的情形
磁碟排程策略 • 最短服務時間優先(Shortest Service Time First) • 選出能夠讓磁碟手臂移動距離最短的I/O需求 • 永遠選擇最小的搜尋時間
磁碟排程策略 • SCAN • 讀寫臂只朝一個方向前進並依序處理I/O需求,直到到達這個方向的最後一個磁軌或是這個方向已經沒有任何需求為止 • 再朝相反的方向移動 • Elevator algorithm 電梯演算法
磁碟排程策略 • C-SCAN • 將掃描限制在一個方向 • 在到達一個方向的最後一個磁軌之後,手臂會回到磁碟的另外一端而重新開始掃描
磁碟排程策略 • N-step-SCAN • 將磁碟的需求佇列切分成長度是N的子佇列 • 接著使用SCAN一次處理一個子佇列 • 當佇列正在被處理時,新的I/O需求會被加入其他的佇列 • N=1 => FIFO, N large => SCAN • FSCAN • 兩個子佇列 • 一個佇列是空的,專門放新的I/O需求
RAID • 重複式獨立磁碟陣列 (Redundant Array of Independent Disks) • Redundant Arrays of Inexpensive Disks • 是一組實體磁碟機,而由作業系統看成單一的邏輯磁碟區 • 資料會散佈在陣列中的所有實體磁碟中 • 使用一個磁碟空間來儲存 parity 資料 • MTTR: Mean Time to Repair • MTTF: Mean Time to Failure
Parity • A parity bit is a bit that is added to ensure that the number of bits with value of one in a given set of bits is always even or odd. • Parity bits are used as the simplest error detecting code.