1. 程式人生 > >第六章 裝置管理 輸入輸出系統——I/O系統

第六章 裝置管理 輸入輸出系統——I/O系統

  1. 磁碟效能簡述

首先與格式有關

  1. 資料的組織和格式
    • 碟片、面、磁軌、扇區
    • 為方便處理,每條磁軌儲存容量相同,每個磁軌上的每個扇區相當於一個盤塊。磁碟”格式化”的過程就是按規定的格式規劃盤塊。

如溫盤格式:

    1. 每道30個扇區,每扇600個位元組。512位元組用於存放資料,其餘存放控制資訊。
    2. 識別符號欄位:標識一個扇區的資訊記錄;    1+2+1+1+3 bytes
    3. 資料欄位:每個扇區存放資料的空間。

    資料前後還有若干特定功能位元組。    1+512+2 bytes

 

與速度有關

  1. 磁碟型別
    • 固定磁頭(每道一磁頭)
    • 移動磁頭(每盤一磁頭)
  2. 訪問時間的計算
    • 尋道時間(到磁軌)
    • 旋轉延遲(到扇區)
    • 傳輸時間

              傳輸時間佔總時間的比例最小,磁碟讀寫速度的提高要選擇合適的排程演算法,減少前兩項用時,使所有作業的磁碟處理時間均衡。

2)磁碟排程方法

  1. 對所有請求訪問磁碟的程序進行合理排程,使對磁碟的平均訪問時間最小。
  2. 目標:使平均尋道時間最少。
  3. 演算法:
    • FCFS
    • 最短尋道時間優先SSTF
    • 掃描演算法SCAN(磁碟電梯排程演算法)
      1. 迴圈掃描演算法CSCAN
      2. N-Step-SCAN演算法
      3. FSCAN演算法

FCFS

  1. 多個程序的磁碟I/O請求構成一個隨機分佈的請求佇列。
  2. 磁碟I/O執行順序按磁碟請求的先後順序。

最短尋道時間優先SSTF  Shortest Seek Time First

  1. 選擇從當前磁頭位置出發移動最少的磁碟I/O請求
    • 使每次磁頭移動時間最少。
    • 不一定是最短平均柱面定位時間,但比FIFO演算法有更好的效能。
    • 對中間的磁軌有利,但可能會有程序處於飢餓狀態(I/O請求總不被執行)。

 

 

設當前在100磁軌上;

程序要求的訪問順序:55,58,39,18,90,160,150,38,184

掃描演算法SCAN(磁碟電梯排程演算法)

  1. SSTF會導致“飢餓”現象
    • 總選擇最近的磁軌訪問,遠磁軌請求的程序會長時間得不到執行。
  2. 改進:
    • 考慮距離的同時,更優先考慮方向
  1. SCAN演算法
    • 規定磁頭移動方向:自裡向外,再自外向裡移動。
    • 後續的I/O磁軌請求,哪個在規定方向上距離最近,就先執行哪個。
    • 如當前為100,後續要求55,86,95,180,165,105
      1. 先由內向外:選最近的105執行,再判斷剩餘的,選165,180。

再由外向內:95,86,55

 

  1. 迴圈掃描CSCAN
  1. SCAN的錯過問題:
    • 容易錯過與當前磁軌距離近,但方向不一致的磁軌。
  2. 修改:將SCAN規定的移動方向改為“單向移動”
    • 由裡向外後,再由裡向外。
  1. N-Step-SCAN
  1. 前述最近尋道演算法共同問題:
    • “磁臂粘著”——磁頭靜止在一個磁軌上,導致其它程序無法及時進行磁碟I/O。(因:高密度盤,程序的讀寫可能集中在某一磁軌)
    • 如現有一系列請求:

3 3 5 2 3 3 3 2 3 3 2 3 3 4 4 5 2 3 3 3 4 4 2 3 3 3 2 2 2 3

不管哪種演算法,從3開始向下執行會是

3 3 3 3 3 3 3 3 3 3….2 2 2 2 2 2 … 4 4 ….

 

  1. 改進:
    • 將磁碟請求佇列分成長為N 的子佇列
    • 按FCFS選擇子佇列。佇列內又按SCAN演算法。

3 3 5 2 |3 3 3 2| 3 3 2 3| 3 4 4 5| 2 3 ….2 3

    • 處理子佇列過程中產生的新I/O再依次排佇列。
    • N=1時,就是FCFS,N很大時就是SCAN。
  1. F-SCAN
  1. N-Step-SCAN的簡化:
    • 請求佇列只分為兩個子佇列
    • 當前一個佇列,按SCAN演算法執行;
    • 掃描期間新生成的組成一個佇列,等待被掃描。

 

  1. 假設一個活動頭磁碟有200道,編號從0-199。當前磁頭正在155道上服務,並且在此之前完成的是173道的訪盤請求。

       現有如下訪盤請求序列(磁碟號):75,168,81,138,87,143,187,129,198,44。試給出採用下列演算法後磁頭移動的順序和移動總量(總磁軌數)。

1.最短尋道時間優先(SSTF)磁碟排程演算法。

2.掃描法(SCAN)磁碟排程演算法(假設沿磁頭移動方向不再有訪問請求時, 磁頭就沿相反方向移動。 44到0磁軌的移動忽略不計)

答:1.SSTF磁頭移動順序:

155,143,138,129,168,187,198,87,81,75,44

三段(155~129,129~198,198~44)

移動總量=155-129+198-129+198-44=249

2.SCAN:

155,143,138,129,87,81,75,44,168,187,198

兩段(155~44,44~198)

移動總量=155-44+198-44=265

 

 

  1. (8分)若干個等待訪問磁碟者依次要訪問的柱面為20,44,40,4,80,12,76,假設每移動一個柱面需要3毫秒時間,移動臂當前位於40號柱面,請按下列演算法分別計算為完成上述各次訪問總共花費的尋找時間。

(1)先來先服務演算法

(2)最短尋找時間優先演算法。

 

Fcfs: 40-20+44-20+44-4+80-4+80-12+76-12=292

Sstf: 40,44,20,12,4,76,80

44-10+44-4+80-4=150

練習

 

  1. 虛擬裝置是指:

通過虛擬技術將一臺獨佔裝置改造成若干臺邏輯裝置,供若干個使用者程序同時使用。

  1. 按資訊交換單位分類,可將裝置分為:

塊裝置和字元裝置。

  1. 通道是:

       一種負責I/O的處理機。       

  1. 位元組多路通道主要用作:

     連線大量的低速I/O裝置。

  1. 從資源分配的角度看,作業系統將外部裝置分為:

獨佔型裝置、共享型裝置、虛擬裝置。

  1. 根據資訊交換方式的不同,可以將通道分為:

位元組多路通道、資料選擇通道、資料多路通道。

  1. 裝置獨佔性是指:

應用程式獨立於具體使用的物理裝置。

  1. 緩衝技術中的緩衝池在:

主存中。

  1. 進行裝置分配時所需要的資料表格主要有:

裝置控制表、裝置控制器控制表、通道控制表和系統裝置表。

  1. 如果有多箇中斷同時發生,系統將根據中斷優先順序響應優先順序最高的中斷請求。若要調整中斷事件的響應次序,可以利用:

中斷遮蔽。

  1. 在作業系統中,一種用空間換取時間的資源轉換技術是:

         Spooling。 

  1. 大多數低速裝置都屬於:

獨享裝置。

  1. 為了實現CPU與外設的並行工作,系統引入了:

中斷和通道硬體機制。

  1. 在作業系統中,使用者在使用I/O裝置時,通常採用:

邏輯裝置名。

  1. Spooling系統是由:

磁碟中的輸入井和輸出井、記憶體中的輸入緩衝區和輸出緩衝區以及輸入程序和輸出程序組成。

  1. 引起中斷髮生的事件稱為:

中斷源。

  1. 裝置與記憶體之間的傳輸方式有:

程式直接控制方式、中斷控制方式、通道控制方式和DMA控制方式,其中通道方式佔用CPU時間最短。

  1. 裝置分配中的安全性是指:

裝置分配應保證不會引起程序死鎖。

  1. Spooling技術是指:

在共享裝置上模擬獨佔裝置。由預輸入程式將作業執行中需訪問的資料預先讀入到輸入井中,緩輸出程式則負責將輸出井中的資訊在輸出裝置上輸出。

  1. 發生中斷時,剛執行完的那條指令所在的單元號稱為:

斷點,斷點的邏輯後繼指令的單元號稱為:恢復點。

 

 

  1. 如何將獨佔型輸入裝置改造成可共享使用的虛擬裝置?
  2. 為什麼要設定記憶體I/O緩衝區?通常有哪幾類緩衝區?
  3. 什麼是裝置驅動程式?其功能是什麼?
  4. 在裝置管理中,何為裝置獨立性?如何實現裝置獨立性?
  5. 試給出常用的I/O排程演算法。
  6. 為什麼要引入Spooling系統?Spooling系統可帶來哪些好處?
  7. DMA控制方式與通道控制方式有什麼不同?
  8. 裝置分配時為什麼要考慮安全性和裝置的無關性?

 

訪問磁碟過程

  1. 對磁碟的訪問總是由缺頁引起的:
    • CPU給出地址,需要訪問某儲存單元;
    • 並行進行TLB查詢和cache查詢;
    • TLB查詢後申明沒有找到;
    • 停止並行查詢,並通知作業系統處理;
    • 作業系統檢查頁表,發現該頁不在記憶體中,需要從硬碟調入。應該如何進行呢?
  2. 作業系統從主存中選擇一頁準備換出,為調入的頁安排存放空間;
  3. 若被換出的頁是“髒”頁,需要將其寫回磁碟儲存;
  4. 作業系統申請I/O匯流排;
  5. 獲得批准後,傳送寫命令給I/O 裝置(磁碟)。 緊跟著傳送需要寫回的頁的全部資料。
  6. I/O控制器發現發給自己的寫命令 ,加入到握手協議,並接受資料。
  7. 根據資料要寫入的地址,讀/寫頭移動到正確的柱面,同時,將資料接收到緩衝區。
  8. 尋道結束後,等待相應的扇區旋轉到磁頭下面,將資料寫入扇區中。 
  9. 在寫入資料間隙,計算校驗碼並寫入扇區中。
  1. 下一步,作業系統繼續申請匯流排(如果還保持匯流排控制權,則不必申請)。
  2. 得到授權後,向磁碟發出讀命令。 
  3. 然後,磁碟識別地址,並轉換為相應的地址段。
  4. 尋道,將讀/寫頭移動到指定位置。
  5. 從指定扇區中讀去資料,並進行校驗。
  6. 磁碟申請I/O匯流排。
  7. 得到授權後,將資料通過匯流排送到記憶體。