為了使系統能夠安全高效地工作,系統在進行裝置分配時應考慮的因素有:⑴裝置的固有屬性;⑵裝置的分配演算法;⑶裝置分配的安全性。
1.根據裝置的固有屬性而採取的策略
在分配裝置時,首先應考慮裝置的屬性。根據裝置的固有屬性採取以下三種策略:
(1)獨享方式
獨享方式是指將乙個裝置分配給某程序後,便一直由它獨佔,直至該程序完成或釋放該裝置為止,系統才能將該裝置分配給其它程序使用。這種分配方式是對獨佔裝置採用的分配策略。它不僅往往造成裝置利用率低,而且還會引起系統死鎖。
(2)共享方式
共享方式是指將共享裝置(磁碟)同時分配給多個程序使用。但是這些程序對裝置的訪問需進行合理的排程。
(3)虛擬方式
虛擬方式是指通過高速的共享裝置,把一台慢速的以獨佔方式工作的物理裝置改造成若干臺虛擬的同類邏輯裝置,這就需要引入spooling技術。虛擬裝置屬於邏輯裝置。
2.裝置分配演算法
與程序的排程演算法相似,通常只採用以下兩種分配演算法:
(1)先來先服務
當多個程序同時向某一裝置提出i/o請求時,該演算法就根據對該裝置提出請求的先後次序將這些程序排列成乙個裝置請求佇列,裝置分配程式把裝置首先分配給隊首程序。
(2)優先順序高者優先
對優先權高的程序所提出的i/o請求賦予高優先權,在形成裝置佇列時,將優先順序高的程序排在裝置佇列前面,先得到分配。而對於優先權相同的i/o請求,則按先來先服務原則排隊分配。
3.裝置分配中的安全性
(1)安全分配方式
每當程序發出乙個i/o請求後,便進入阻塞狀態,直到其i/o操作完成時才被喚醒。當它執行時不保持任何裝置資源,打破了產生死鎖乙個必要條件—「請求和保持」,所以這種分配方式是安全的。但是這種分配演算法使得cpu與i/o裝置序列工作,裝置的利用率比較低。
(2)不安全分配方式
程序發出乙個i/o請求後仍可以繼續執行,需要時還可以發第二個i/o請求、第三個i/o請求。只有當程序所請求的裝置已被另乙個程序占用時,程序才進入阻塞狀態。這種分配方式是不安全,因為它可能具備「請求和保持」條件,從而可能造成系統死鎖。如圖2-15所示程序p1發出第乙個i/o請求,占有了資源r1後,在繼續向前推進時,又要申請資源r2;此時,程序p2卻占有了資源r2,在繼續向前推進時,又要申請資源r1,從而造成系統死鎖。所以,在裝置分配程式中應該增加安全性檢查的功能。
主機系統的獨享裝置分配程式是負責向對系統提出i/o請求的程序分配裝置,及其相應的控制器和通道。
1.裝置分配中資料結構
在進行裝置分配時,通常要借助於一些用於記錄系統中有關裝置、控制器和通道的資訊。基本的**有:系統裝置表(sdt)、裝置控制表(dct)、控制器控制表(coct)、通道控制表(chct)。每個表的具體內容如圖4-13所示。
在整個系統中,有一張系統裝置表(sdt),用於記錄系統中全部裝置的資訊。每個裝置佔乙個表目,其中包括物理裝置型別、裝置識別符號、裝置控制表指標及裝置驅動程式的入口位址等表項。
系統為每乙個裝置都配置了一張裝置控制表(dct),用於記錄該裝置的情況。表中除了有用於指示裝置型別的字段和裝置識別符號欄位外,還應有下列字段:
(1)裝置狀態:當裝置自身處於「忙」狀態時,將裝置的忙標誌置「l」。若與該裝置相連線的控制器或通道處於「忙」狀態,而不能啟動該裝置,則將裝置的等待標誌置「l」。
(2)裝置佇列的隊首、隊尾指標:凡因請求本裝置而未得到滿足的程序,其pcb都應按照一定的策略排成乙個佇列,稱為裝置請求佇列或簡稱為裝置佇列。其隊首、隊尾指標指向裝置請求佇列的隊首、隊尾的pcb。
(3)coct表指標:該指標指向與該裝置相連線的控制器的控制表。在具有多條通路的情況下,乙個裝置可與多個控制器相連線。此時,在dct中應設定多個控制器表指標。
(4)重複執行次數:外部裝置在傳送資料時,若發生資訊傳送錯誤,系統並不立即認為傳送失敗,而是允許它重新傳送。只要在規定的重複次數或時間內恢復正常傳送,則仍認為傳送成功,否則才認為傳送失敗。
系統也為每個控制器設定一張用於記錄本控制器情況的控制器控制表(coct),為每個通道都配有一張通道控制表(chct)。
2.單通道的系統裝置分配程式
對於具有單通道的系統,則當程序提出i/o請求後,系統依次查詢圖4-13的sdt和dct、coct、chct四個表,分別從中找出裝置、相連的控制器、通道,根據相應表目狀態字可知它是否正忙(dct表目還要看狀態字是否等待)。若忙,便將請求i/o程序的pcb掛在它的等待佇列上;否則,便將它分配給程序。只有在裝置、控制器和通道三者都分配成功時,這次的裝置分配才算成功。然後,便可啟動該i/o裝置進行資料傳送。
3.裝置分配程式的改進
為了獲得裝置的獨立性,程序應用邏輯裝置名代替物理裝置名請求i/o。這樣,系統首先從 sdt中找出同類裝置的dct集合表。從集合表中尋找不忙的裝置進行分配,若找不到則將程序阻塞,排入該類裝置的等待佇列中。
實際上,系統為了提高可靠性和靈活性,通常採用多通路的i/o系統結構。此時對多個控制器和通道的分配,必須查詢所有的控制器和通道,才能決定是否將該程序掛起。
裝置管理學習之磁碟管理(1)
磁碟管理包括磁碟排程演算法 磁碟快取記憶體 raid技術。首先學習磁碟的結構 如圖所示 磁碟由多個碟片組成,每個碟片有兩個盤面,每個碟片都有兩個磁頭,統一由磁頭臂控制。碟片上的儲存區域被分為磁軌,每個磁軌上又分多個扇區。如圖,每個扇區的大小事512位元組,所以扇區也是資料儲存和傳輸的基本單位。按磁頭...
裝置管理 裝置管理概述
i o裝置是作業系統龐大複雜的主要原因之一,不同外部裝置之間,速度差異很大,控制介面複雜,資料表示各異,與其它功能聯絡緊密,特別是檔案系統。在這種情況下,難以針對裝置做統一的規劃與設計。對i o裝置的直接控制,是通過特定的裝置控制器進行的,主機只需要對控制器進行操作即可,無需理會具體裝置的引數細節。...
裸裝置管理
裸裝置 raw device,就是不被作業系統直接管理的裝置。這種裝置少了作業系統一層,i o效率更高。資料庫一般會用到。常與lvm聯用。建立裸裝置 mkdir raw mknod dev rawctl c 162 0 mknod dev raw raw1 c 162 1 mknod dev raw...