1. 程式人生 > >第6章 輸入輸出系統——I/O系統

第6章 輸入輸出系統——I/O系統

思維導圖:
在這裡插入圖片描述

關於裝置管理
1)管理物件:
I/O裝置和相應的裝置控制器(I/O系統組成)
2)基本任務:
完成使用者提出的I/O請求,
提高I/O速率、改善I/O裝置的利用率。
為更高層程序方便使用裝置提供手段
一、I/O系統的功能、模型和介面
1)主要功能:
1.1隱藏物理裝置細節,方便使用者:使用者使用抽象的I/O命令即可
1.2實現裝置無關性,方便使用者:使用者可用抽象的邏輯裝置名來使用裝置,同時也提高了OS的可移植性和易適應性。
1.3提高處理機和裝置的並行性,提高利用率:緩衝區管理
1.4對I/O裝置進行控制:控制方式、裝置分配、裝置處理
1.5確保對裝置正確共享:虛擬裝置及裝置獨立性等
1.6錯誤處理
2)I/O/系統的層次結構和模型
1.層次結構:系統中的裝置管理模組分為若干個層次
2.層間操作:下層為上層提供服務,完成輸入輸出功能中的某些子功能,並遮蔽功能實現的細節。
3.I/O軟體的分層:①使用者層軟體②裝置獨立軟體③裝置驅動程式④中斷處理程式
4.I/O軟體系統的層次
4.1中斷處理程式
處於I/O系統的底層,直接與硬體進行互動
4.2裝置驅動程式
處於次底層,是程序和控制器之間的通訊程式
功能:將上層發來的抽象I/O請求,轉換為對I/O裝置的具體命令和引數,並把它裝入到裝置控制其中的命令和引數暫存器中
4.3裝置獨立性軟體
包括裝置命名、裝置分配、資料緩衝等軟體
5. I/O系統介面
在I/O系統與高層介面中,根據裝置型別的不同,又進一步分為若干個介面。主要包括:
塊裝置介面
流裝置介面
網路通訊介面

二、I/O裝置和裝置控制器
1)I/O裝置的型別
1.1按傳輸速率分類:
低速、中速、高速(鍵盤、印表機、磁碟)
1.2使用:儲存裝置、輸入輸出裝置
1.3按資訊交換的單位分類:
塊裝置:有結構、速率高、可定址、DMA方式控制
字元裝置:無結構、速率低、不可定址、中斷方式控制
1.4按裝置的共享屬性分類:
獨佔:印表機
共享:一個時刻上仍然是隻被一個程序佔用。可定址、可隨機訪問的色後備。磁碟。
虛擬:使一臺獨佔裝置變換為若干臺邏輯裝置,供給若干使用者“同時使用”。
2.I/O裝置中的介面
與控制器的介面有三種類型的訊號
資料訊號線(進出資料轉換、緩衝後傳送)
控制訊號線(讀\寫\移動磁頭等控制)
狀態訊號線
2)裝置控制器
裝置並不直接與CPU通訊
①基本功能
接收和識別CPU命令(控制暫存器:存放命令和引數)
標識和報告裝置的狀態(狀態暫存器)
資料交換(資料暫存器)
地址識別(控制器識別裝置地址、暫存器地址。地址譯碼器)
資料緩衝(協調I/O與CPU的速度差距)
差錯控制
②組成
裝置控制器與處理機的介面
裝置控制器與裝置的介面
I/O邏輯
③處理機與裝置控制器間
實現CPU與裝置控制器之間的通訊。
共有三類訊號線:
資料線:資料線通常與兩類暫存器相連線,第一類是資料暫存器;第二類是控制/狀態暫存器。
地址線
控制線
3)I/O通道
①I/O通道裝置的引入
裝置控制器已大大減少CPU對I/O的干預
(如承擔了選擇裝置,資料轉換、緩衝等功能)
但當主機的外設很多時,CPU的負擔仍然很重。
在CPU和裝置控制器之間增設一個硬體機構:“通道”
設定通道後:CPU只需向通道傳送一條I/O指令即可不再幹預後續操作。
通道形成通道程式,執行I/O操作,完成後向CPU發中斷訊號。
②通道型別
根據其控制的外圍裝置的不同型別,資訊交換方式也可分為以下三種類型:
2.1位元組多路通道
一個通道常通過多個子通道連線多個裝置控制器
多個裝置,通過非分配型子通道以位元組為單位交叉輪流使用主通道傳輸自己的資料。
2.2陣列選擇通道
針對高速裝置:分配型子通道
裝置利用子通道佔用通道後,一段時間內一直獨佔,直至裝置傳送完畢釋放。
利用率低。
2.3陣列多路通道
結合上述兩種方式。
含多個非分配型子通道。資料傳送則按陣列方式進行。
③“瓶頸”問題
由於通道價格昂貴,致使數量較少,使它成為I/O系統的瓶頸,進而造成系統吞吐量的下降。

三、中斷機構和中斷處理程式
1.中斷簡介
⑴中斷和陷入
中斷:CPU對I/O裝置發來的中斷訊號的一種響應,中斷是由外部裝置引起的,又稱外中斷。
陷入:由CPU內部事件所引起的中斷,通常把這類中斷稱為內中斷或陷入(trap)。
中斷和陷入的主要區別:是訊號的來源。
⑵中斷向量表
中斷向量表:為每種裝置配以相應的中斷處理程式,並把該程式的入口地址,放在中斷向量表的一個表項中,併為每一個裝置的中斷請求,規定一箇中斷號,它直接對應於中斷向量表的一個表項中。
⑶對多中斷源的處理方式
①遮蔽(禁止)中斷
②巢狀中斷
2.中斷處理程式
主要工作
①進行程序上下文的切換
②對處理中斷訊號源進行測試
③讀取裝置狀態
④修改程序狀態

四、裝置驅動程式
裝置驅動程式是I/O系統的高層與裝置控制器之間的通訊程式,其主要任務:
接收上層軟體發來的抽象I/O要求,如read、write等命令;
再把它轉化為具體要求,傳送給裝置控制器,啟動裝置去執行。
反方向,它也將由裝置控制器發來的訊號,傳送給上層軟體。
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. 驅動程式處理過程
4.1I/O裝置與控制器間的通訊轉換程式
瞭解抽象命令,瞭解控制器內部的暫存器結構
4.2與硬體密切相關,每類裝置配備一種驅動程式
功能:接受解釋指令(有通道的系統,自動通道程式)、相關判斷、傳送裝置命令、響應中斷
特點,控制方式不同程式不同,部分固化進硬體,程式碼可重入。
5. I/O控制方式
(1) 程式I/O方式
1.1cpu對I/O裝置的控制採取程式I/O方式,或稱忙—等待方式
1.2高速CPU空閒等待低速I/O裝置,致使CPU極大浪費。
(2)中斷驅動I/O方式
2.1CPU向相應的裝置控制器發出一條I/O命令
2.2然後立即返回繼續執行任務。
2.3裝置控制器按照命令的要求去控制指定I/O裝置。
2.4這時CPU與I/O裝置並行操作。
2.5I/O裝置輸入資料中,無需CPU干預,因而可使CPU與I/O裝置並行工作。從而提高了整個系統的資源利用率及吞吐量。
(3)直接儲存器訪問DMA(位元組—塊)
①該方式的特點是:
資料傳輸的基本單位是資料塊;
所傳送的資料是從裝置直接送入記憶體的,或者直接從記憶體進裝置;不需要CPU操作。
CPU干預進一步減少:僅在傳送一個或多個數據塊的開始和結束時,才需CPU干預,整塊資料的傳送是在控制器的控制下完成的。
宗旨:減少主機對I/O控制的干預,將CPU從繁雜的I/O控制事物中解脫出來。
②DMA控制器的組成
DMA控制器由三部分組成:
主機與DMA控制器的介面;
DMA控制器與塊裝置的介面;
I/O控制邏輯。
③DMA控制器中的暫存器
3.1資料暫存器DR:暫存裝置到記憶體或從記憶體到裝置的資料。
3.2記憶體地址暫存器MAR:它存放把資料從裝置傳送到記憶體的起始的目標地址或記憶體原地址。
3.3資料計數器DC:存放本次CPU要讀或寫的字(節)數。
3.4命令/狀態暫存器CR:用於接收從CPU發來的I/O命令或有關控制和狀態資訊。
④DMA工作過程
(4)I/O通道控制方式
1.DMA適用於讀一個連續的資料塊;
2.實現對一組資料塊的讀(寫)及有關的控制和管理為單位的干預。
3.此時,CPU只需發一條I/O指令,給出通道程式的首地址及要訪問裝置即可。
五、與裝置無關的I/O軟體
1.裝置獨立性的基本含義:
指應用程式中所使用的裝置,不侷限於使用某個具體的物理裝置,也稱為裝置無關性。
為了實現裝置獨立性,在裝置驅動程式之上設定一層軟體,稱為與裝置無關的I/O軟體,或裝置獨立性軟體。
裝置無關的軟體是I/O系統最高層軟體,但它和其下的裝置驅動程式之間的界限,將隨作業系統和裝置的不同而有所差異。
2.邏輯裝置名到物理裝置名的對映
2.1邏輯裝置表LUT(Logical Unit Table)
2.2LUT的設定問題
整個系統設定一張LUT(裝置重名問題)
為每個使用者設定一張LUT,記入各自PCB。
3.裝置分配
多道環境下,系統中裝置是所有程序共享的。要防止無序競爭,提高外設資源的利用率。需由OS進行統一、合理的裝置分配。
1)資料結構
記錄相應裝置或控制器的狀態,及對裝置或控制器進行控制所需的資訊。所需資料結構:
1.1裝置控制表
系統為每一裝置都配置一張
記錄本裝置的情況。
1.2控制器控制表
1.3通道控制表
1.4系統裝置(總)表
2)裝置分配需考慮的因素
2.1裝置固有屬性:獨佔、共享、獨佔但可虛擬。根據屬性採取互斥、次序排程、虛擬等不同分配策略。
2.2裝置分配演算法(對不同程序的裝置請求序列,如何進行選擇),常採用兩種:FCFS、優先順序高者優先
2.3裝置分配的安全性:程序開始I/O後就阻塞直到I/O完成。不“請求和保持”(安全的);允許連續I/O請求,是不安全的,此類分配方式需進行安全性檢查。
2.4裝置獨立性
使用者IO請求中使用邏輯名申請某類裝置,實際物理名稱是系統根據裝置型別分析分配後才確定的。
3)裝置的分配過程
1.基本分配步驟(一個有通道的例子):
1.1分配裝置:
根據請求裝置名,查詢SDT,找到DCT;
狀態、安全性等因素都可能導致本申請程序阻塞,掛入DCT等待佇列中。
1.2分配控制器
通過1步分配裝置後,從DCT找到COCT;
檢查COCT狀態字,若忙碌,程序PCB掛到其等待佇列
1.3分配通道
COCT找到CHCT
判斷狀態,…
2.裝置分配程式的改進細節
增加裝置的獨立性
考慮多通路情況
六、使用者層的I/O軟體
1)系統呼叫與庫函式
2)裝置分配中的虛擬技術—— SPOOLing技術
虛擬性是OS的四大特徵之一。
多道程式技術將一臺物理CPU虛擬為多臺邏輯CPU,實現多個使用者共享一臺主機;
2.1如何將一臺物理I/O裝置虛擬為多臺邏輯I/O裝置,允許多個使用者共享“同時使用” ?
回顧離線技術
假離線技術
2.2SPOOLing系統的組成
主要有三大部分(如下頁圖)
輸入井和輸出井
輸入緩衝區和輸出緩衝區
輸入程序和輸出程序
2.3SPOOLing系統的特點
2.3.1提高了I/O的速度。利用輸入輸出井模擬成離線輸入輸出,緩和了CPU和I/O裝置速度不匹配的矛盾。
2.3.2將獨佔裝置改造為共享裝置。並沒有為程序分配裝置,而是為程序分配一儲存區和建立一張I/O請求表。
2.3.3最終,實現了虛擬裝置功能。多個程序可“同時”使用一臺獨佔裝置。
七、緩衝區管理
1)緩衝管理
I/O控制方式減少CPU對I/O的干預提高利用率;
緩衝則通過緩和CPU和I/O裝置速度不匹配矛盾,增加CPU和I/O裝置的並行性,提高利用率。
1.引入緩衝區的主要原因:
緩和CPU與I/O裝置間速度不匹配的矛盾。
緩衝區資料成批傳入記憶體,也可進一步減少對CPU的中斷頻率
最終目的:提高CPU和I/O裝置的並行性
2.使用緩衝區的方式:
1)單緩衝、多緩衝
2)迴圈緩衝
①迴圈緩衝的組成
2.1.1多個緩衝區。大小相同,三種類型:
預備裝輸入資料的空緩衝區R
裝滿資料的緩衝區G
計算程序正在使用的現行工作緩衝區C
2.1.2多個指標。
指示正在使用的緩衝區C的指標Current
指示計算程序下一個可取的緩衝區G的指標Nextg
指示輸入程序下次可放的緩衝區R的指標Nexti
②迴圈緩衝區的使用
主要就是利用指標,操作上述不同型別緩衝區
③程序同步
Nexti趕上Nextg。
Nextg趕上Nexti。
3)緩衝池(Buffer Pool)
(1)迴圈緩衝的問題
不能同時雙向通訊
利用率不高。緩衝區是專用緩衝。
系統併發程式很多時,許多這樣的迴圈緩衝需要管理,比較複雜。
①緩衝池的組成
1.1對於既可輸入又可輸出的公用緩衝池,至少應含有下列三種類型的緩衝區:
空緩衝區;
裝滿輸入資料的緩衝區;
裝滿輸出資料的緩衝區;
1.2為方便管理,將上述型別相同的緩衝區連成佇列
空緩衝區佇列(所有程序都可用)
輸入佇列(n個程序有各自的佇列)
輸出佇列(n個程序有各自的佇列)
2.3工作狀態決定了current有四種工作緩衝區:
收容輸入資料的工作緩衝區;
提取輸入資料的工作緩衝區;
收容輸出資料的工作緩衝區;
提取輸出資料的工作緩衝區;
②緩衝區的工作方式
四種工作方式:
收容輸入:Getbuf(emq),hin;輸入資料填入一空緩衝區;Putbuf(inq,hin)
提取輸入: Getbuf(inq),sin;從輸入緩衝佇列中取出一資料區的內容;Putbuf(emq,sin)
收容輸出: Getbuf(emq),hout;輸出資料填入一空緩衝區;Putbuf(outq,hout)
提取輸出: Getbuf(outq),sout;從輸出緩衝佇列中取一資料區的內容;Putbuf(emq,sout)
八、磁碟儲存器的效能和排程
1)磁碟效能簡述
1.1資料的組織和格式
碟片、面、磁軌、扇區
為方便處理,每條磁軌儲存容量相同,每個磁軌上的每個扇區相當於一個盤塊。磁碟”格式化”的過程就是按規定的格式規劃盤塊。
1.2磁碟型別
固定磁頭(每道一磁頭)
移動磁頭(每盤一磁頭)
1.3訪問時間的計算
尋道時間(到磁軌)
旋轉延遲(到扇區)
傳輸時間
2)磁碟排程方法
2.1對所有請求訪問磁碟的程序進行合理排程,使對磁碟的平均訪問時間最小。
2.2目標:使平均尋道時間最少。
2.3演算法:
2.3.1FCFS
2.3.2最短尋道時間優先SSTF
2.3.3掃描演算法SCAN(磁碟電梯排程演算法)
迴圈掃描演算法CSCAN
N-Step-SCAN演算法
FSCAN演算法