1. 程式人生 > >第六章_裝置管理

第六章_裝置管理

裝置管理

管理物件:I/O裝置和相應的裝置控制器(I/O系統組成)
目的:

  1. 完成使用者提出的I/O請求,
  2. 提高I/O速率、改善I/O裝置的利用率。
  3. 為更高層程序方便使用裝置提供手段

I/O系統的組成

  1. 需要用於輸入、輸出和儲存資訊的裝置;
  2. 需要相應的裝置控制器;
  3. 控制器與CPU連線的高速匯流排;
  4. 有的大中型計算機系統,配置I/O通道;
    在這裡插入圖片描述

裝置控制器

裝置並不直接與CPU通訊,計算機中的一個實體——“裝置控制器”負責控制一個或多個I/O裝置,以實現I/O裝置和計算機之間的資料交換。

控制器是CPU與I/O裝置之間的介面,作為中間人接收從CPU發來的命令,並去控制I/O裝置工作,以使處理機脫離繁雜的裝置控制事務。

①基本功能
1.接收和識別CPU命令(控制暫存器:存放命令和引數)
2.標識和報告裝置的狀態(狀態暫存器)
3.資料交換(資料暫存器)
4.地址識別(控制器識別裝置地址、暫存器地址。地址譯碼器)
5.資料緩衝(協調I/O與CPU的速度差距)
6.差錯控制

②組成
1.裝置控制器與處理機的介面
2.裝置控制器與裝置的介面
3.I/O邏輯

I/O邏輯:
通過一組控制線與處理機互動 CPU要啟動一個裝置時, 將啟動命令傳送給控制器; 同時通過地址線把地址傳送給控制器 控制器的I/O邏輯對收到的地址和命令進行譯碼,再根據所譯出的命令選擇裝置進行控制。

③處理機與裝置控制器間
實現CPU與裝置控制器之間的通訊。

共有三類訊號線:
資料線/ 地址線/ 控制線

I/O通道

I/O通道裝置的引入:
裝置控制器已大大減少CPU對I/O的干預 (如承擔了選擇裝置,資料轉換、緩衝等功能) 但當主機的外設很多時,CPU的負擔仍然很重。 在CPU和裝置控制器之間增設一個硬體機構:“通道”.

設定通道後 CPU只需向通道傳送一條I/O指令即可不再幹預後續操作。 通道形成通道程式,執行I/O操作,完成後向CPU發中斷訊號。

主要目的: 建立更獨立的I/O操作,解放CPU。 資料傳送的獨立 I/0操作的組織、管理及結束處理也儘量獨立。

實際上I/O通道是一種特殊的處理機: 指令型別單一,只用於I/O操作; 通道沒有記憶體,它與CPU共享記憶體

通道型別:根據其控制的外圍裝置的不同型別,資訊交換方式也可分為以下三種類型:
位元組多路通道/ 陣列選擇通道/ 陣列多路通道

“瓶頸”問題:
由於通道價格昂貴,致使數量較少,使它成為I/O系統的瓶頸,進而造成系統吞吐量的下降。
解決“瓶頸”問題最有效的辦法便是增加裝置到主機間的通路而不增加通道

I/O系統的主要功能:

1)隱藏物理裝置細節,方便使用者 使用者使用抽象的I/O命令即可
2)實現裝置無關性,方便使用者 使用者可用抽象的邏輯裝置名來使用裝置,同時也提高了OS的可移植性和易適應性。
3)提高處理機和裝置的並行性,提高利用率:緩衝區管理
4)對I/O裝置進行控制:控制方式、裝置分配、裝置處理
5) 確保對裝置正確共享:虛擬裝置及裝置獨立性等
6) 錯誤處理

I/O/系統的層次結構和模型

層次結構:系統中的裝置管理模組分為若干個層次(如下)
|使用者層軟體 |
|裝置獨立性軟體 |
|裝置驅動程式 |
|中斷處理程式 |
|硬體 |
①使用者層軟體:實現與使用者互動的介面,使用者可直接呼叫在使用者層提供的、與I/O操作有關的庫函式,對裝置進行操作。
②裝置獨立軟體:用於實現使用者程式與裝置驅動器的統一介面、裝置命名、裝置的保護以及裝置的分配與釋放等,同時為裝置管理和資料傳送提供必要的儲存空間。
③裝置驅動程式:與硬體直接相關,用於具體實現系統對裝置發出的操作指令,驅動I/O裝置工作的驅動程式。
④中斷處理程式:用於儲存被中斷程序的CPU環境,轉入相應的中斷處理程式進行處理,處理完後再恢復被中斷程序的現場後,返回到被中斷程序。
⑤硬體:執行I/O操作
層間操作:下層為上層提供服務,完成輸入輸出功能中的某些子功能,並遮蔽功能實現的細節。

I/O系統介面

在I/O系統與高層介面中,根據裝置型別的不同,又進一步分為若干個介面。主要包括:
①塊裝置介面 :
塊裝置:
資料的存取和傳輸都是以資料塊為單位的裝置。基本特徵是傳輸速率較高、可定址。磁碟裝置的I/O常採用DMA方式。
特點 :
隱藏了磁碟的二維結構:塊裝置介面隱藏了磁碟地址是二維結構的情況:每個扇區的地址需要用磁軌號和扇區號來表示。
將抽象命令對映為低層操作:塊裝置介面將上層發來的抽象命令,對映為裝置能識別的較低層具體操作。

②流裝置介面
字元裝置: 資料的存取和傳輸是以字元為單位的裝置。如鍵盤、印表機等。基本特徵是傳輸速率較低、不可定址,常採用中斷驅動方式。
get和put操作: 由於字元裝置是不可定址的,因而對它只能採取順序存取方式。(使用者程式)獲取或輸出字元的方法是採用get和put操作。
in-control指令: 因字元裝置的型別非常多,且差異甚大,系統以統一的方式提供了一種通用的in-control指令來處理它們(包含了許多引數,每個引數表示一個與具體裝置相關的特定功能)。

③網路通訊介面
通過某種方式,把計算機連線到網路上。
作業系統必須提供相應的網路軟體和網路通訊介面,使得計算機能通過網路與網路上的其它計算機進行通訊,或上網瀏覽。

I/O系統的軟體層次:
1. 中斷處理過程 (最底層)
2. I/O控制方式
3. 緩衝管理、裝置分配、裝置處理

中斷機構和中斷處理程式:
中斷在作業系統中有特殊而重要的地位,沒有它就不可能實現多道程式。 中斷是I/O系統最低的一層,也是裝置管理的基礎。

1.中斷簡介
⑴中斷和陷入
中斷:CPU對I/O裝置發來的中斷訊號的一種響應,中斷是由外部裝置引起的,又稱外中斷。
陷入:由CPU內部事件所引起的中斷,通常把這類中斷稱為內中斷或陷入(trap)。
中斷和陷入的主要區別:是訊號的來源。

⑵中斷向量表
中斷向量表:為每種裝置配以相應的中斷處理程式,並把該程式的入口地址,放在中斷向量表的一個表項中,併為每一個裝置的中斷請求,規定一箇中斷號,它直接對應於中斷向量表的一個表項中。

⑶對多中斷源的處理方式
①遮蔽(禁止)中斷:
所有中斷都將按順序依次處理。 當處理機正在處理一箇中斷時,將遮蔽掉所有新到的中斷,讓它們等待,直到處理機已完成本次中斷的處理後,處理機再去檢查並處理。 優點是簡單,但不能用於對實時性要求較高的中斷請求。
②巢狀中斷:
中斷優先順序:系統根據不同中斷訊號源,對服務要求的緊急程度的不同,它們分別規定不同的優先順序。 當同時有多個不同優先順序的中斷請求時,CPU優先響應最高優先順序的中斷請求; 高優先順序的中斷請求,可以搶佔正在執行低優先順序中斷的處理機,該方式類似於基於優先順序的搶佔式程序排程。

2.中斷處理程式
主要工作 ①進行程序上下文的切換 ②對處理中斷訊號源進行測試 ③讀取裝置狀態 ④修改程序狀態

中斷處理流程:
測定是否有未響應的中斷訊號
保護被中斷程序的CPU環境
轉入相應的裝置處理程式
中斷處理
恢復CPU的現場

裝置驅動程式

裝置驅動程式是I/O系統的高層與裝置控制器之間的通訊程式,其主要任務:
(1)接收上層軟體發來的抽象I/O要求,如read、write等命令;
(2)再把它轉化為具體要求,傳送給裝置控制器,啟動裝置去執行。
(3)反方向,它也將由裝置控制器發來的訊號,傳送給上層軟體。

  1. 驅動程式的功能
    (1)接收由與裝置無關的軟體發來的命令和引數,並將命令中的抽象要求,轉換為與裝置相關的低層操作序列;
    (2)檢查使用者I/O請求的合法性,瞭解I/O裝置的工作狀態,傳遞與I/O裝置操作有關的引數,設定裝置的工作方式;
    (3)發出I/O命令,如果裝置空閒,便立即啟動I/O裝置,完成指定的I/O操作;如果裝置忙碌,則將請求者掛在裝置佇列上等待;
    (4)及時響應由裝置控制器發來的中斷請求,並根據其中斷型別,呼叫相應的中斷處理程式進行處理。

  2. 裝置驅動程式的特點
    (1)驅動程式是與裝置無關的軟體和裝置控制器之間通訊和轉換的程式。
    (2)驅動程式,與裝置控制器和I/O裝置的硬體特性,緊密相關。
    (3)驅動程式與I/O裝置所採用的I/O控制方式緊密相關。
    (4)由於驅動程式與硬體緊密相關,因而其中的一部分必須用匯編語言編寫。
    (5)驅動程式應允許可重入,一個正在執行的驅動程式常會在一次呼叫完成前被再次呼叫。

  3. 裝置處理方式分類
    (1)為每一類裝置設定一個程序,專門用於執行這類裝置的I/O操作。這種方式比較適合於較大的系統;
    (2)在整個系統中設定一個I/O程序,專門用於執行系統中所有各類裝置的I/O操作。也可以設定一個輸入程序和一個輸出程序,分別處理系統中的輸入或輸出操作;
    (3)不設定專門的裝置處理程序,而只為各類裝置設定相應的裝置驅動程式,供使用者或系統程序呼叫。這種方式目前用得較多。

  4. 驅動程式處理過程:
    它是I/O裝置與控制器間的通訊轉換程式;
    瞭解抽象命令,瞭解控制器內部的暫存器結構;
    與硬體密切相關,每類裝置配備一種驅動程式

    功能:接受解釋指令(有通道的系統,自動通道程式)、相關判斷、傳送裝置命令、響應中斷
    特點:控制方式不同程式不同,部分固化進硬體,程式碼可重入。

I/O控制方式

  1. 程式I/O方式
    向控制器傳送一條I/O指令;
    啟動輸入裝置輸入資料;
    把狀態暫存器busy=1。 然後不斷測試標誌。
    為1:表示輸入機尚未輸完一個字,CPU繼續對該標誌測試;
    直到為0:資料已輸入控制器資料暫存器中, CPU取控制器中的資料送入記憶體單元,完成一個字的I/O 。
    高速CPU空閒等待低速I/O裝置,致使CPU極大浪費。

  2. 中斷驅動I/O方式
    CPU向相應的裝置控制器發出一條I/O命令 然後立即返回繼續執行任務。 裝置控制器按照命令的要求去控制指定I/O裝置。 這時CPU與I/O裝置並行操作。

    中斷方式比程式I/O方式更有效 但仍以字(節)為單位進行I/O,每當完成一個字(節),控制器便要請求一次中斷。 CPU雖然可與I/O並行,但效率不高,存在頻繁的中斷干擾。

    改進: CPU下指令通知控制器完成一塊資料的I/O,控制器完成後才發中斷,而不是每個位元組都要向CPU發中斷; 多位元組傳輸入記憶體過程不需要CPU搬運,由控制器控制完成(所以稱直接儲存器訪問)——DMA(Direct Memory Access)控制方式引入

  3. 直接儲存器訪問DMA 方式
    該方式的特點是:
    1)資料傳輸的基本單位是資料塊;
    2)所傳送的資料是從裝置直接送入記憶體的,或者直接從記憶體進裝置;不需要CPU操作。 CPU干預進一步減少:
    3)僅在傳送一個或多個數據塊的開始和結束時,才需CPU干預,整塊資料的傳送是在控制器的控制下完成的。

    可見DMA方式又是成百倍的減少了CPU對I/O的干預,進一步提高了CPU與I/O裝置的並行操作程度。

    ②DMA控制器的組成
    DMA控制器由三部分組成:
    主機與DMA控制器的介面;
    DMA控制器與塊裝置的介面;
    I/O控制邏輯
    DMA控制器中的暫存器

    為實現主機與控制器之間塊資料的直接交換,必須設定如下四類暫存器:
    1)資料暫存器DR:暫存裝置到記憶體或從記憶體到裝置的資料。
    2)記憶體地址暫存器MAR:它存放把資料從裝置傳送到記憶體的起始的目標地址或記憶體原地址。
    3)資料計數器DC:存放本次CPU要讀或寫的字(節)數。
    4)命令/狀態暫存器CR:用於接收從CPU發來的I/O命令或有關控制和狀態資訊。

    ③DMA工作過程:
    CPU先向磁碟控制器傳送一條讀命令。
    該命令被送到命令暫存器CR中。
    同時傳送資料讀入到記憶體的起始地址,該地址被送入MAR中;
    要讀資料的字數則送入資料計數器DC中;
    將磁碟中的資料原地址直接送入DMA控制器的I/O控制邏輯上,按裝置狀態啟動磁頭到相應位置。
    啟動DMA控制器控制邏輯開始進行資料傳送:
    {
    DMA控制器讀入一個數據到資料暫存器DR中,然後傳到記憶體MAR地址中;
    接著MAR+1,DC-1,判斷DC是否為0,如否,繼續,反之控制器發中斷請求,傳送完畢。
    }

  4. I/O通道控制方式
    通道是一種通過執行通道程式管理I/O操作的控制器,它使主機(CPU和記憶體)與I/O操作之間達到更高的並行程度。由於它的任務是管理實現輸入/輸出操作,提供一種傳送通道,所以將這種部件稱作“通道”。
    通道通過執行通道程式,與裝置控制器共同實現對I/O裝置的控制

    通道程式由一系列通道指令構成。
    CPU指令→裝置驅動程式解讀→通道程式→通道

    通道指令一般包含下列資訊:
    操作碼:規定指令所執行的操作。
    記憶體地址: 計數。表示本指令所要操作的位元組數。
    通道程式結束位:用以表示程式是否結束。
    記錄結束標誌:表示該指令是否與下條指令有關。

使用者層的I/O軟體

裝置分配中的虛擬技術 —— SPOOLing技術
■虛擬性是OS的四大特徵之一。
■多道程式技術將一臺物理CPU虛擬為多臺邏輯CPU,實現多個使用者共享一臺主機;

假離線技術
多道程式技術,專門利用程式模擬離線I/O的外圍機,完成裝置I/O操作。

■稱這種聯機情況下實現的同時外圍操作為SPOOLing 技術(稱為假離線操作)
■一般程序對獨佔裝置的需求被假離線模擬到磁碟上。所以實現裝置虛擬,多道是前提,還需高速、大容量、可隨機存取的外存支援。

SPOOLing系統的組成:
(1)輸入井和輸出井:磁碟上開闢兩大儲存空間。輸入井模擬離線輸入的磁碟裝置,輸出井模擬離線輸出時的磁碟。
(2)輸入緩衝區和輸出緩衝區:為緩解速度矛盾,記憶體中開闢兩大緩衝空間,輸入緩衝區暫存輸入裝置送來的資料,再送給輸入井;輸出緩衝區暫存輸出井送來的資料,再送輸出裝置。
(3)輸入程序和輸出程序。 用一程序模擬離線輸入時外圍裝置控制器的功能,把低速輸入裝置上的資料傳送到高速磁碟上; 用另一程序模擬離線輸出時外圍裝置控制器的功能,把資料從磁碟上傳送到低速輸出裝置上。

SPOOLing系統的特點:
(1)提高了I/O的速度。利用輸入輸出井模擬成離線輸入輸出,緩和了CPU和I/O裝置速度不匹配的矛盾。
(2)將獨佔裝置改造為共享裝置。並沒有為程序分配裝置,而是為程序分配一儲存區和建立一張I/O請求表。
(3)最終,實現了虛擬裝置功能。多個程序可“同時”使用一臺獨佔裝置。

緩衝區管理

------程序中“CPU計算速度”和“裝置I/O速度”仍存在不匹配的矛盾。
解決:CPU進行當前計算時,裝置進行後續資料的輸入(——緩衝區)。

緩衝管理
■I/O控制方式減少CPU對I/O的干預提高利用率;
■緩衝則通過緩和CPU和I/O裝置速度不匹配矛盾,增加CPU和I/O裝置的並行性,提高利用率。
■現代OS中,幾乎所有的I/O裝置與處理機交換資料時,都用了緩衝區。
■引入緩衝區的主要原因: 緩和CPU與I/O裝置間速度不匹配的矛盾。 緩衝區資料成批傳入記憶體,也可進一步減少對CPU的中斷頻率 最終目的:提高CPU和I/O裝置的並行性。
■使用緩衝區的方式: 1)單緩衝、多緩衝 2)迴圈緩衝 3)緩衝池(裝置速度差距越大,緩衝區容量越大)

1)單緩衝與多緩衝
單緩衝
每當使用者程序發出一I/O請求時,OS在主存中為之分配一個緩衝區。 CPU和外設輪流使用,一方處理完後等待對方處理。

雙緩衝
■進一步加快輸入和輸出速度,提高裝置利用率制,也稱緩衝對換(Buffer Swapping)
■輸入:資料送入第一緩衝區,裝滿後轉向第二緩衝區。
■讀出:OS從第一緩衝區中移出資料,送入使用者程序,再由CPU對資料進行計算。

多緩衝引入
I/O與CPU速度基本相匹配,採用雙緩衝能獲得較好的效果,基本上能並行操作。 但,若兩者的速度相差甚遠,雙緩衝的效果仍不夠理想;
為進一步協調速度差,可增加緩衝區數量,同時進行一定的多緩衝管理入和出的同步。
引入多緩衝機制。組織形式:迴圈緩衝、緩衝池。
多緩衝:

  1. 迴圈緩衝
    ①迴圈緩衝的組成
    ■多個緩衝區。大小相同,三種類型:
    (1) 預備裝輸入資料的空緩衝區R
    (2) 裝滿資料的緩衝區G
    (3) 計算程序正在使用的現行工作緩衝區C
    ■多個指標。
    (1) 指示正在使用的緩衝區C的指標Current
    (2) 指示計算程序下一個可取的緩衝區G的指標Nextg
    (3) 指示輸入程序下次可放的緩衝區R的指標Nexti

    ②迴圈緩衝區的使用
    計算程序(CPU)和輸入程序(I/O操作)可利用兩個過程來使用迴圈緩衝區。
    主要就是利用指標,操作上述不同型別緩衝區
    一個時段只能用於輸入或輸出,不能同時雙向通訊。

    ③程序同步
    兩個程序的控制:輸入程序和計算程序並行執行,如何控制相應的兩個指標不斷順時針方向移動,這樣就可能出現兩種情況:
    1)Nexti趕上Nextg。意味著輸入速度大於計算速度,緩衝區滿,只能阻塞輸入程序等計算程序取,此情況稱為系統受計算限制。
    2)Nextg趕上Nexti。意味著輸入速度低於計算速度,緩衝區空,只能阻塞計算程序等輸入程序放,此情況稱為系統受I/O限制。
  2. 緩衝池
    迴圈緩衝的問題:
    ■不能同時雙向通訊
    ■利用率不高。緩衝區是專用緩衝。(每個程序都要維護自己的一個迴圈緩衝區),使用有剩餘時也不給其他程序使用,消耗大量記憶體空間。
    ■系統併發程式很多時,許多這樣的迴圈緩衝需要管理,比較複雜。

    為提高緩衝區的利用率,目前廣泛流行緩衝池,在池中設定多個可供若干個程序共享的緩衝區。
    系統將多個緩衝區形成一個緩衝池。 池中緩衝區為系統中所有的程序共享使用(如UNIX系統在塊裝置管理中設定了一個15個緩衝區組成的緩衝池)
    組織形式:佇列及佇列指標
    ①緩衝池的組成
    對於既可輸入又可輸出的公用緩衝池,至少應含有下列三種類型的緩衝區:
    ■空緩衝區;
    ■裝滿輸入資料的緩衝區;
    ■裝滿輸出資料的緩衝區;

    為方便管理,將上述型別相同的緩衝區連成佇列
    ■空緩衝區佇列(所有程序都可用)
    ■輸入佇列(n個程序有各自的佇列)
    ■輸出佇列(n個程序有各自的佇列)

    ②緩衝區的工作方式
    四種工作方式:
    1)收容輸入:輸入資料填入一空緩衝區
    2)提取輸入:從輸入緩衝佇列中取出一資料區的內容
    3)收容輸出:輸出資料填入一空緩衝區
    4)提取輸出:從輸出緩衝佇列中取一資料區的內容

八,磁碟儲存器的效能和排程
1)磁碟效能簡述
首先與格式有關 資料的組織和格式
■碟片、面、磁軌、扇區
■為方便處理,每條磁軌儲存容量相同,每個磁軌上的每個扇區相當於一個盤塊。磁碟”格式化”的過程就是按規定的格式規劃盤塊。

與速度有關
■磁碟型別 固定磁頭(每道一磁頭) 移動磁頭(每盤一磁頭)
■訪問時間的計算 尋道時間(到磁軌) 旋轉延遲(到扇區) 傳輸時間

2)磁碟排程方法
對所有請求訪問磁碟的程序進行合理排程,使對磁碟的平均訪問時間最小。

目標:使平均尋道時間最少。

演算法:
①FCFS
多個程序的磁碟I/O請求構成一個隨機分佈的請求佇列。 磁碟I/O執行順序按磁碟請求的先後順序。

②最短尋道時間優先SSTF
選擇從當前磁頭位置出發移動最少的磁碟I/O請求

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

③掃描演算法SCAN(磁碟電梯排程演算法)
規定磁頭移動方向:自裡向外,再自外向裡移動。 後續的I/O磁軌請求,哪個在規定方向上距離最近,就先執行哪個。

如當前為100,後續要求55,86,95,180,165,105
先由內向外:選最近的105執行,再判斷剩餘的,選165,180。
再由外向內:95,86,55

◼迴圈掃描CSCAN
SCAN的錯過問題: 容易錯過與當前磁軌距離近,但方向不一致的磁軌。
修改:將SCAN規定的移動方向改為“單向移動” 由裡向外後,再由裡向外。

◼N-Step-SCAN
將磁碟請求佇列分成長為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。

◼F-SCAN N-Step-SCAN的簡化:
請求佇列只分為兩個子佇列 當前一個佇列,按SCAN演算法執行; 掃描期間新生成的組成一個佇列,等待被掃描。