操作系統-IO管理和磁盤調度


I/O設備

IO設備的類型

分為三類:人機交互類外部設備:打印機、顯示器、鼠標、鍵盤等等。這類設備數據交換速度相對較慢,通常是以字節為單位進行數據交換的

存儲設備:用於存儲程序和數據的設備,如磁盤、磁帶、光盤等。這類設備用於數據交換、速度較快。

網絡通信設備:用於與遠程設備通信的設備,如各種網絡接口、調制解調器、其速度介於兩者之間。

image.png                                           

IO控制方式

程序控制I/O:處理器代表一個進程給io模塊發送一個io命令,該進程進入忙等待,直到操作完成

中斷驅動I/O:處理器代表進程向io發送命令,如果來自進程的io指令是非阻塞的,那么處理器繼續執行進程的后續指令。如果io指令時阻塞的,那么處理器執行來自操作系統的指令,將當前進程設置為阻塞態並且調度其他進程。

直接存儲器訪問(DMA):一個DMA模塊控制內存和io模塊之間的數據交換。為傳送一塊數據,處理器給DMA模塊發送請求,並且只有當整個數據塊傳送結束后,它才能被中斷。

 

DMA: 在io設備和內存之間開辟直接的數據交換通路,徹底解放CPU。有利於系統總線與存儲器進行雙向數據傳送。其基本單位是數據塊,整塊數據的傳送是在DMA控制器的控制下完成的,僅僅在傳送一個或多個數據塊的開始和結束的時候,才需要CPU干預。所傳送的數據,也是直接從設備送入內存的,反之相同。

 

操作系統的IO設計

在設計io機制的時候,兩個最重要的目標是效率和通用性。

 

本地外圍設備的組織:硬件->調度和控制->設備I/O->邏輯I/O->用戶進程

通信端口的組織:硬件->調度和控制->設備I/O->通信結構->用戶進程

文件系統的組織:硬件->調度和控制->設備I/O->物理組織->文件系統->目錄管理->用戶進程

 

邏輯IO:邏輯io模塊把設備當作一個邏輯資源來處理,它並不關心實際控制設備的細節。邏輯io模塊代表用戶進程管理的一般io功能,允許用戶進程根據設備標識符以及諸如打開、關閉、讀、寫之類的簡單命令與設備打交道。

 

設備IO:請求的操作和數據(緩沖的數據、記錄等)被轉換成適當的IO指令序列、通道命令和控制器命令。可以使用緩沖技術來提高利用率。

 

調度和控制:io操作的排隊、調度實際上發生在這一層,處理中斷、收集並報告io狀態。這一層是與io模塊和設備硬件真正發生交互的軟件層。

 

image.png                                           

 

設備獨立性: 用戶在編程序時使用的設備與實際設備無關。一個程序獨立於分配給它的某類設備的具體設備,即在用戶程序中只需要指明IO使用的設備類型即可。 其優先包括:方便用戶編程、使程序運行不受具體機器環境的限制、便於程序移植。

 

I/O緩沖

使用緩沖的原因

  1. 緩和CPU與IO設備間速度不匹配的矛盾
  2. 減少對CPU的中斷頻率,放寬對CPU中斷響應時間的限制
  3. 解決基本數據單元大小不匹配的問題
  4. 提高CPU與IO設備之間的並行性

 

緩沖是用來平滑IO需求的峰值的一種技術,但是當進程的平均需求大於io設備的服務能力的時候,緩沖再多也不能讓io設備與這個進程一直並駕齊驅。但是在多道程序設計環境中,多種io活動和多種進程活動的時候,緩沖是提高系統效率和單個進程性能的一種方法。

 

緩沖

緩沖:在輸入請求發出前就開始執行輸入傳送,並且在輸出請求發出一段時間之后才開始執行輸出傳送。【預輸入,緩輸出】

 

面向塊的設備:將信息保存在塊中,塊的大小是固定的,傳送過程中一次傳送一塊。如磁盤和USB

面向流的設備:以字節流的方式輸入輸出數據,沒有塊結構。如終端、打印機、通信端口、鼠標等等。

 

單緩沖

當用戶進程發出IO請求的時候,操作系統給該操作分配一個位於內存中系統部分的緩沖區。

 

面向塊:輸入傳送的數據被放到系統緩沖區中,當傳送完成的時候,進程把該塊移到用戶空間,並立即請求另一塊。需要數據的設備或處理器從緩沖區中拿走數據。這樣能夠期望這塊數據最終會被使用。

 

最終用時為MAX(C,T)+M。(c:處理器處理時間,m:數據傳輸到用戶區的時間,t:輸入到緩沖區的時間。)

加速比為: (T+C)/(MAX(C,T)+M)

 

優勢在於能夠提高系統速度,並且操作系統可以進行進程交換。但是增加了操作系統的邏輯復雜度。交換邏輯也會受到影響。

 

面向流:每次傳送一行的方式或者每次傳送一個字節的方式使用。傳送行的方式輸入要掛起,輸出不用。傳送字節的方式采用生產者/消費者模型。

 

雙緩沖

也稱緩沖交換。給操作系統分配兩個系統緩沖區,在一個進程往一個緩沖區中傳送數據(取數據)的同時,操作系統清空(或者填充)另一個緩沖區。

 

它的執行時間是MAX(C,T),加速比是 (T+C)/MAX(C,T)。 如果C<=T,則有可能使得面向塊的設備全速運行,反之也能確保處理器的效率,不需要等待IO。因此性能能夠有所提高,但是復雜性也提升了。

 

面向流:每次傳送一行的io,用戶進程不需要為輸入輸出掛起程序。對於每次傳送一個字節的操作,雙緩沖並沒有特別的優勢。都采用生產者/消費者模型。

image.png                                           

循環緩沖

如果該進程需要爆發式地執行大量的IO操作,僅僅有兩個緩沖是不夠的,在這種情況下,通常使用多於兩個的緩沖區的方案來緩解不足。當使用兩個以上的緩沖區的時候,這組緩沖區自身被當作循環緩沖區。

image.png                                           

 

緩沖池

由多個系統公共的緩沖區組成,緩沖區按其使用情況可以形成三個隊列:空緩沖隊列、裝滿輸入數據的緩沖隊列和裝滿輸出數據的緩沖隊列。還包括了四個緩沖區:收容輸入數據、提取輸入數據、收容輸出數據、提取輸出數據的工作緩沖區。

 

當輸入程序需要輸入數據的時候,從空緩沖隊列對首使用一個空緩沖區,作為收容輸入的工作緩沖區,然后裝入數據,裝滿后再掛到輸入隊列隊尾。當計算程序需要輸入數據的時候,從輸入隊列取得一個緩沖區作為提取輸入工作緩沖區,計算進程從中提取數據,數據用完后再放入到空緩沖隊列。

 

磁盤調度

 

磁盤性能參數

尋道時間:磁頭定位到磁道所需要的時間

旋轉延遲:磁道定位之后,磁盤控制器開始等待,直到適當的扇區旋轉到磁頭處的時間。

存取時間:尋道時間+旋轉延遲,即達到讀或寫的位置所需要的時間。

傳輸時間:磁頭定位完成,磁頭通過下面旋轉的扇區,執行讀操作或寫操作所需要的時間。

image.png                                           

 

image.png                                           

 

總的存取時間=存取時間(尋道時間+旋轉延遲)+傳輸時間

image.png                                           

 

計算:

image.png                                           

 

 

磁盤調度策略

 

 磁盤訪問產生性能差異的原因可以追溯到尋道時間。如果扇區訪問請求包括隨機選擇磁道,則性能就特別低。為提高性能,需要減少花費在尋道上的時間。

 

 

 

 
 

名稱

說明

注釋

RSS 

隨機訪問

用於分析和模擬

FIFO 

按順序處理隊列中的項目

最公平的調度,如果大量進程競爭一個磁盤,這種技術在性能上往往接近於隨即調度。

PRI

根據進程優先級來

在磁盤隊列管理之外控制,不能優化磁盤的利用率

LIFO

后進先出

局部性最好,資源利用率最高

SSTF 

最短服務時間優先,移動道數最少

利用率高,隊列小

SCAN

僅沿一個方向移動,在途中滿足請求。到達后反方向掃描

服務分布比較好

C-SCAN

限定在一個方向上,到達之后,回到起始段重新掃描

服務變化較低

N-step-SCAN

把請求隊列分成長度為N的子隊列,每一次SCAN掃描,如果此時由新請求,則放到新隊列中

服務保證

FSCAN

兩個子隊列

負載敏感

 
 
 
 

image.png                                           image.png                                           

image.png                                           

硬盤高速緩存

一個硬盤高速緩存是內存中為磁盤扇區設置的一個緩沖區,包含有磁盤中某些扇區的副本。當出現一個請求某一特定扇區的IO請求時,首先進行檢測,以確定該扇區是否在cache中。

 

主要考慮的問題有兩個:

  1. 緩存數據與用戶空間交換的問題:數據傳送、共享內存指針
  2. 置換策略:LRU LFU

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM