1. 程式人生 > >第六章 輸入輸出系統

第六章 輸入輸出系統

本章章節

1.I/O系統的功能、模型和介面
2.I/O裝置和裝置控制器
3.中斷機構和中斷處理程式
4.裝置驅動程式
5.與裝置無關的I/O軟體
6.使用者層的I/O軟體
7.緩衝區管理
8.磁碟儲存器的效能和排程

I/O系統的組成
需要用於輸入、輸出和儲存資訊的裝置
需要相應的裝置控制器
控制器與CPU連線的高速匯流排
有的大中型計算機系統,配置I/O通道

I/O系統的軟體層次
中斷處理過程
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常採用DMA方式。
②流裝置介面
字元裝置:
1.資料的存取和傳輸是以字元為單位的裝置。如鍵盤、印表機等。基本特徵是傳輸速率較低、不可定址,常採用中斷驅動方式。
2.get和put操作:
由於字元裝置是不可定址的,因而對它只能採取順序存取方式。(使用者程式)獲取或輸出字元的方法是採用get和put操作。
3.in-control指令:
因字元裝置的型別非常多,且差異甚大,系統以統一的方式提供了一種通用的in-control指令來處理它們(包含了許多引數,每個引數表示一個與具體裝置相關的特定功能)。
③網路通訊介面
通過某種方式,把計算機連線到網路上。
作業系統必須提供相應的網路軟體和網路通訊介面

,使得計算機能通過網路與網路上的其它計算機進行通訊,或上網瀏覽。

I/O裝置中的介面
與控制器的介面有三種類型的訊號
1.資料訊號線(進出資料轉換、緩衝後傳送)
2.控制訊號線(讀\寫\移動磁頭等控制)
3.狀態訊號線

裝置控制器

控制器是CPU與I/O裝置之間的介面,作為中間人接收從CPU發來的命令,並去控制I/O裝置工作,以使處理機脫離繁雜的裝置控制事務。
①基本功能
1.接收和識別CPU命令(控制暫存器:存放命令和引數)
2.標識和報告裝置的狀態(狀態暫存器)
3.資料交換(資料暫存器)
4.地址識別(控制器識別裝置地址、暫存器地址。地址譯碼器)
5.資料緩衝(協調I/O與CPU的速度差距)
6.差錯控制
②組成
1.裝置控制器與處理機的介面
2.裝置控制器與裝置的介面
3.I/O邏輯
③處理機與裝置控制器間
共有三類訊號線:
1.資料線:資料線通常與兩類暫存器相連線,第一類是資料暫存器;第二類是控制/狀態暫存器。
2.地址線
3.控制線

I/O通道
①I/O通道裝置的引入
CPU只需向通道傳送一條I/O指令即可不再幹預後續操作。
通道形成通道程式,執行I/O操作,完成後向CPU發中斷訊號。
②通道型別
1.位元組多路通道
2.陣列選擇通道
3.陣列多路通道
③“瓶頸”問題

1.陣列選擇通道
針對高速裝置:分配型子通道
裝置利用子通道佔用通道後,一段時間內一直獨佔,直至裝置傳送完畢釋放
利用率低。
2.陣列多路通道
結合上述兩種方式。
含多個非分配型子通道。資料傳送則按陣列方式進行。

中斷機構和中斷處理程式

中斷是I/O系統最低的一層,也是裝置管理的基礎。
(1)中斷和陷入
中斷:CPU對I/O裝置發來的中斷訊號的一種響應,中斷是由外部裝置引起的,又稱外中斷。
陷入:由CPU內部事件所引起的中斷,通常把這類中斷稱為內中斷或陷入(trap)。
中斷和陷入的主要區別:是訊號的來源。
(2)中斷向量表
中斷向量表:為每種裝置配以相應的中斷處理程式,並把該程式的入口地址,放在中斷向量表的一個表項中,併為每一個裝置的中斷請求,規定一個中斷號,它直接對應於中斷向量表的一個表項中。
(3)對多中斷源的處理方式
①遮蔽(禁止)中斷:
②巢狀中斷:

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

裝置驅動程式

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

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

裝置處理方式
不設定專門的裝置處理程序,而只為各類裝置設定相應的裝置設定相應的裝置驅動程式,供使用者或系統程序呼叫。

驅動程式處理過程
①I/O裝置與控制器間的通訊轉換程式
②與硬體密切相關,每類裝置配備一種驅動程式

一次I/O由“驅動程式+中斷程式”一塊處理完成

DMA控制器的組成
主機與DMA控制器的介面;
DMA控制器與塊裝置的介面;
I/O控制邏輯。

DMA控制器中的暫存器
1.資料暫存器DR:暫存裝置到記憶體或從記憶體到裝置的資料。
2.記憶體地址暫存器MAR:它存放把資料從裝置傳送到記憶體的起始的目標地址或記憶體原地址。
3.資料計數器DC:存放本次CPU要讀或寫的字(節)數。
4.命令/狀態暫存器CR:用於接收從CPU發來的I/O命令或有關控制和狀態資訊。

與裝置無關的I/O軟體

獨立性的基本含義:
指應用程式中所使用的裝置,不侷限於使用某個具體的物理裝置,也稱為裝置無關性。

裝置分配
1)資料結構
裝置控制表
控制器控制表
通道控制表
系統裝置(總)表
2)裝置分配需考慮的因素
①裝置固有屬性:獨佔、共享、獨佔但可虛擬。根據屬性採取互斥、次序排程、虛擬等不同分配策略。
②裝置分配演算法(對不同程序的裝置請求序列,如何進行選擇),常採用兩種:
FCFS
優先順序高者優先
3)裝置的分配過程
1.分配裝置:
2.分配控制器
3.分配通道
當上述三步都通過後,才可啟動裝置進行資料傳輸

使用者層的I/O軟體

小部分I/O系統軟體放在了使用者應用層上。
庫函式(與應用程式連結)
假離線技術(虛擬裝置)

1)系統呼叫與庫函式
OS在使用者層中引入了系統呼叫,應用程式可以通過它,間接呼叫OS中的I/O過程,對I/O裝置進行操作。
2)裝置分配中的虛擬技術
多道程式技術將一臺物理CPU虛擬為多臺邏輯CPU,實現多個使用者共享一臺主機

緩衝區管理

I/O控制方式減少CPU對I/O的干預提高利用率;
緩衝則通過緩和CPU和I/O裝置速度不匹配矛盾,增加CPU和I/O裝置的並行性,提高利用率。
現代OS中,幾乎所有的I/O裝置與處理機交換資料時,都用了緩衝區。

引入緩衝區的主要原因:
緩和CPU與I/O裝置間速度不匹配的矛盾。
緩衝區資料成批傳入記憶體,也可進一步減少對CPU的中斷頻率
最終目的:提高CPU和I/O裝置的並行性。

使用緩衝區的方式:
1)單緩衝、多緩衝
單快取
每當使用者程序發出一I/O請求時,
OS在主存中為之分配一個緩衝區。
CPU和外設輪流使用,一方處理完後等待對方處理。
雙緩衝
兩個緩衝區,CPU和外設不再針對一塊交替
可能實現連續處理無需等待對方。前提是CPU和外設對一塊資料的處理速度相近。而如下圖情況CPU仍需等待慢速裝置。
2)迴圈緩衝
設定多塊緩衝區
用迴圈結構組織,只供兩個相關程序使用
順一個方向放入或取出
3)緩衝池(Buffer Pool)
不能同時雙向通訊
利用率不高。緩衝區是專用緩衝
系統將多個緩衝區形成一個緩衝池。
池中緩衝區為系統中所有的程序共享使用(如UNIX系統在塊裝置管理中設定了一個15個緩衝區組成的緩衝池)
組織形式:佇列及佇列指標

緩衝池
空緩衝區;
裝滿輸入資料的緩衝區;
裝滿輸出資料的緩衝區;

收容輸入資料的工作緩衝區;hin
提取輸入資料的工作緩衝區;sin
收容輸出資料的工作緩衝區;hout
提取輸出資料的工作緩衝區;sout

磁碟儲存器的效能和排程

1)磁碟效能簡述
資料的組織和格式:碟片、面、磁軌、扇區
①與速度有關
②磁碟型別
固定磁頭(每道一磁頭)
移動磁頭(每盤一磁頭)
③訪問時間的計算
尋道時間(到磁軌)
旋轉延遲(到扇區)
傳輸時間
2)磁碟排程方法
對所有請求訪問磁碟的程序進行合理排程,使對磁碟的平均訪問時間最小。
演算法:
FCFS
最短尋道時間優先SSTF
掃描演算法SCAN(磁碟電梯排程演算法)
迴圈掃描演算法CSCAN
N-Step-SCAN演算法
FSCAN演算法