1 設備分配概述
設備分配是指根據用戶的I/O請求分配所需的設備。分配的總原則是充分發揮設備的使用效率,盡可能地讓設備忙碌,又要避免由于不合理的分配方法造成進程死鎖。
2 設備分配的數據結構
設備分配依據的主要數據結構有設備控制表(DCT)、控制器控制表(COCT)、通道控制表(CHCT)和系統設備表(SDT),各數據結構功能如下:
設備控制表DCT:系統為每一個設備配置一張DCT,如圖所示。它用于記錄設備的特性以及與I/O控制器連接的情況。
控制器控制表COCT:每個控制器都配有一張COCT,如圖a所示。它反映設備控制器的使用狀態以及和通道的連接情況等。
通道控制表CHCT:每個通道配有一張CHCT,如圖b所示。
系統設備表SDT:整個系統只有一張SDT,如圖c所示。它記錄已連接到系統中的所有物理設備的情況,每個物理設備占一個表目。
3 設備分配應考慮的因素
由于在多道程序系統中,進程數多于資源數,會引起資源的競爭。因此,要有一套合理的分配原則,主要考慮的因素有:I/O設備的固有屬性,I/O設備的分配算法,設備分配的安全性以及設備獨立性。
3.1 I/O設備的固有屬性
從設備的特性來看,釆用下述三種使用方式的設備分別稱為獨占設備、共享設備和虛擬設備三類。
3.2 I/O設備分配的策略
設備分配應根據設備特性、用戶要求和系統配置情況。分配的總原則既要充分發揮設備的使用效率,又要避免造成進程死鎖,還要將用戶程序和具體設備隔離開。
設備分配方式:設備分配方式有靜態分配和動態分配兩種。
靜態分配
- 靜態分配主要用于對獨占設備的分配,它在用戶作業開始執行前,由系統一次性分配該作業所要求的全部設備、控制器(和通道)。一旦分配后,一直為該作業所占用,直到該作業被撤銷。靜態分配方式不會出現死鎖,但設備的使用效率低。因此,靜態分配方式不符合分配的總原則。
動態分配
- 動態分配是在進程執行過程中根據執行需要進行。當進程需要設備時,通過系統調用命令向系統提出設備請求,由系統按照事先規定的策略給進程分配所需要的設備、I/O控制器,一旦用完之后,便立即釋放。動態分配方式有利于提高設備的利用率,但如果分配算法使用不當,則有可能造成進程死鎖。
對于獨占設備,既可以釆用動態分配方式也可以靜態分配方式,往往釆用靜態分配方式,即在作業執行前,將作業所要用的這一類設備分配給它。
共享設備可被多個進程所共享,一般采用動態分配方式,但在每個I/O傳輸的單位時間內只被一個進程所占有,通常釆用先請求先分配和優先級高者先分的分配算法。
3.3 設備分配的安全性
設備分配的安全性是指設備分配中應防止發生進程死鎖。
安全分配方式
每當進程發出I/O請求后便進入阻塞狀態,直到其I/O操作完成時才被喚醒。由于摒棄了“請求和保持”條件,該設備分配方式是安全的;缺點是CPU和I/O設備是串行工作的。不安全分配方式
進程在發出I/O請求后繼續運行,需要時又發出多個I/O請求。僅當進程所請求的設備已被另一進程占用時,才進入阻塞狀態。優點是一個進程可同時操作多個設備,從而使進程推進迅速;缺點是這種設備分配有可能產生死鎖。
3.4 邏輯設備名到物理設備名的映射
為了提高設備分配的靈活性和設備的利用率、方便實現I/O重定向,需要引入了設備獨立性。
4 SPOOLing技術
為了緩和CPU的高速性與I/O設備低速性之間的矛盾而引入了脫機輸入/輸出技術。該技術是利用專門的外圍控制機,將低速I/O設備上的數據傳送到高速磁盤上,或者相反。
當系統引入多道程序技術后,完全可以利用其中一道程序,來模擬技術時的外圍控制機功能,把低速I/O設備上的數據傳送到高速磁盤上,再用另一道程序來模擬脫機輸出時外圍控制機的功能,把數據從磁盤傳送到低速設備上。此技術稱為SPOOLing技術(假脫機技術)。
4.1 輸入井和輸出井
在磁盤上開辟出的兩個存儲區域。輸入井模擬脫機輸入時的磁盤,用于收容I/O設備輸入的數據。輸出井模擬脫機輸出時的磁盤,用于收容用戶程序的輸出數據。
4.2 輸入緩沖區和輸出緩沖區
在內存中開辟的兩個緩沖區。輸入緩沖區用于暫存由輸入設備送來的數據,以后再傳送到輸入井。輸出緩沖區用于暫存從輸出井送來的數據,以后再傳送到輸出設備。
4.3 輸入進程和輸出進程
輸入進程模擬脫機輸入時的外圍控制機,將用戶要求的數據從輸入機通過輸入緩沖區再送到輸入井。當CPU需要輸入數據時,直接將數據從輸入井讀入內存。
輸出進程模擬脫機輸出時的外圍控制機,把用戶要求輸出的數據先從內存送到輸出并,待輸出設備空閑時,再將輸出井中的數據經過輸出緩沖區送到輸出設備。
4.4 共享打印機
共享打印機是SPOOLing技術的一個實例,這項技術已被廣泛地用于多用戶系統和局域網絡中。
當用戶進程請求打印輸出時,SPOOLing系統同意為它打印輸出,但并不真正立即把打印機分配給該用戶進程,而只為它做兩件事:
- 由輸出進程在輸出井中為之申請一個空閑磁盤塊區,并將要打印的數據送入其中。
- 輸出進程再為用戶進程申請一張空白的用戶請求打印表,并將用戶的打印要求填入其中,再將該表掛到請求打印隊列上。
SPOOLing系統的主要特點有:提高了 I/O的速度;將獨占設備改造為共享設備;實現 了虛擬設備功能。