設備分配概述
設備分配是指根據用戶的 I/O 請求分配所需的設備。分配的總原則是充分發揮設備的使用效率,盡可能地讓設備忙碌,又要避免由于不合理的分配方法造成進程死鎖。從設備的特性來看,釆用下述三種使用方式的設備分別稱為獨占設備、共享設備和虛擬設備三類。
獨占式使用設備。指在申請設備時,如果設備空閑,就將其獨占,不再允許其他進程申請使用,一直等到該設備被釋放才允許其他進程申請使用。例如,打印機,在使用它打印時,只能獨占式使用,否則在同一張紙上交替打印不同任務的內容,無法正常閱讀。
分時式共享使用設備。獨占式使用設備時,設備利用率很低,當設備沒有獨占使用的要求時,可以通過分時共享使用,提高利用率。例如,對磁盤設備的 I/O 操作,各進程的每次 I/O 操作請求可以通過分時來交替進行。
以 方式使用外部設備。 技術是在批處理操作系統時代引入的,即假脫機 I/O 技術。這種技術用于對設備的操作,實質上就是對 I/O 操作進行批處理。
設備分配的數據結構
設備分配依據的主要數據結構有設備控制表(DCT)、控制器控制表(COCT)、通道控制表(CHCT)和系統設備表(SDT),各數據結構功能如下:
設備控制表 DCT:系統為每一個設備配置一張 DCT,如下圖所示。它用于記錄設備的特性以及與 I/O 控制器連接的情況。DCT 包括設備標識符、設備類型、設備狀態、指向控制器控制表 COCT 的指針等。其中,設備狀態指示設備是忙還是空閑,設備隊列指針指向等待使用該設備的進程組成的等待隊列打印機狀態是空閑,控制表指針指向與該設備相連接的設備控制器。
控制器控制表 COCT:每個控制器都配有一張 COCT,如下圖所示。它反映設備控制器的使用狀態以及和通道的連接情況等。
通道控制表 CHCT:每個通道配有一張 CHCT,如下圖所示。
系統設備表 SDT:整個系統只有一張 SDT,如下圖所示。它記錄已連接到系統中的所有物理設備的情況,每個物理設備占一個表目。
由于在多道程序系統中,進程數多于資源數,會引起資源的競爭。因此,要有一套合理的分配原則,主要考慮的因素有:I/O 設備的固有屬性,I/O 設備的分配算法,設備分配的安全性以及設備獨立性。
設備分配的策略
設備分配原則:設備分配應根據設備特性、用戶要求和系統配置情況。分配的總原則既要充分發揮設備的使用效率,又要避免造成進程死鎖,還要將用戶程序和具體設備隔離開。
設備分配方式:設備分配方式有靜態分配和動態分配兩種。
靜態分配主要用于對獨占設備的分配,它在用戶作業開始執行前,由系統一次性分配該作業所要求的全部設備、控制器(和通道)。一旦分配后,這些設備、控制器(和通道)就一直為該作業所占用,直到該作業被撤銷。靜態分配方式不會出現死鎖,但設備的使用效率低。因此,靜態分配方式弁不符合分配的總原則。
動態分配是在進程執行過程中根據執行需要進行。當進程需要設備時,通過系統調用命令向系統提出設備請求,由系統按照事先規定的策略給進程分配所需要的設備、I/O 控制器,一旦用完之后,便立即釋放。動態分配方式有利于提高設備的利用率,但如果分配算法使用不當,則有可能造成進程死鎖。
設備分配算法:常用的動態設備分配算法有先請求先分配、優先級高者優先等。
對于獨占設備,既可以釆用動態分配方式也可以靜態分配方式,往往釆用靜態分配方式,即在作業執行前,將作業所要用的這一類設備分配給它。共享設備可被多個進程所共享,一般釆用動態分配方式,但在每個 I/O 傳輸的單位時間內只被一個進程所占有,通常釆用先請求先分配和優先級高者先分的分配算法。
設備分配的安全性
設備分配的安全性是指設備分配中應防止發生進程死鎖。
安全分配方式:每當進程發出 I/O 請求后便進入阻塞狀態,直到其 I/O 操作完成時才被喚醒。這樣,一旦進程已經獲得某種設備后便阻塞,不能再請求任何資源,而且在它阻塞時也不保持任何資源。i 點是設備分配安全;缺點是 CPU 和 I/O 設備是串行工作的(對同一進程而言)。
不安全分配方式:進程在發出 I/O 請求后繼續運行打印機狀態是空閑,需要時又發出第二個、第三個 I/O 請求等。僅當進程所請求的設備已被另一進程占用時,才進入阻塞狀態。優點是一個進程可同時操作多個設備,從而使進程推進迅速;缺點是這種設備分配有可能產生死鎖。
邏輯設備名到物理設備名的映射
為了提高設備分配的靈活性和設備的利用率、方便實現 I/O 重定向,因此引入了設備獨立性。設備獨立性是指應用程序獨立于具體使用的物理設備。
為了實現設備獨立性,在應用程序中使用邏輯設備名來請求使用某類設備,在系統中設置一張邏輯設備表( Unit Table, LUT),用于將邏輯設備名映射為物理設備名。LUT 表項包括邏輯設備名、物理設備名和設備驅動程序入口地址;當進程用邏輯設備名來請求分配設備時,系統為它分配相應的物理設備,并在 LUT 中建立一個表項,以后進程再利用邏輯設備名請求 I/0 操作時,系統通過查找 LUT 來尋找相應的物理設備和驅動程序。
在系統中可釆取兩種方式建立邏輯設備表:
在整個系統中只設置一張 LUT。這樣,所有進程的設備分配情況都記錄在這張表中,故不允許有相同的邏輯設備名,主要適用于單用戶系統中。
為每個用戶設置一張 LUT。當用戶登錄時,系統便為該用戶建立一個進程,同時也為之建立一張 LUT,并將該表放入進程的 PCB 中。