在windows系統中,編寫扯程式實現對獨佔裝置的分配與**的模擬,該程式中包括;建立裝置類表和裝置表、分配裝置和**裝置的函式。
在多道程式環境下, 對於獨佔裝置, 應採用獨享分配策略, 即將乙個裝置分配給程序後, 便由該程序獨佔, 直至該程序完成或釋放該裝置, 然後系統才能再將該裝置分配給其他程序使用 。在實驗中, 通過模擬方法實現對獨佔裝置的分配和**。
在作業系統中, 通常要通過**記錄相應裝置狀態等, 以便進行裝置分配。 進行裝置分配時所需的資料結構(**)有裝置類表和裝置控制表等。裝置類表記錄系統中全部裝置的情況,每個裝置類佔乙個表目,包括:裝置類.想、設各識別符號、裝置驅動程式人口、擁有裝置數量、可分配裝置數量、裝置表起始地城等,如表5 -1 所示 。
系統為每乙個裝置都配置了一張裝置控制表, 用手記錄本裝置的情況 。 每一裝置類佔乙個表目,包括:裝置狀態、是否分配、 占有作業名等,如表5 - 2所示。
作業申請某裝置時, 先查 「裝置類表」, 如果該類裝置的擁有裝置數量滿足申請要求 則從裝置類表中得到該類裝置的裝置表起始位址, 然後找到 「裝置控制表」 中該類裝置的起始位址,依次查詢該類裝置的表項,找到裝置狀態是「好」且沒有被分配的裝置分配給作業.分配裝置的過程中要修改「裝置類表」中可分配裝置數量,並且把「裝置控制表」中裝置「是否分配」項更改為「是」,並填寫占有作業名和相對號。
裝置**時,系統首先檢視「裝置控制表」,找到需要釋放的裝置,將該裝置「是否分配」項更改為「否」,然後在「裝置類表」中將「可使用數量」增加1。
表5 - 1 裝置類表
裝置類 擁有裝置數量 可分配裝置數量 起始位址
input 5 2 2
printer 4 3 5
表5-2 裝置控制表
起始位址 裝置狀態 是否分配 占有作業名 相對號
11 好/壞 是/否 job 1
#include
#include
#include
using
namespace std;
//裝置管理實驗 裝置類別3 最大擁有量4
class
equip
;class
equiptype
;equiptype a[3]
;void
init()
}}void
disp()
cout
"絕對號\t狀態\t分配態\t佔有者\t相對號"
for(
int i=
0;i<
3;i++)}
}void
disbribute()
}}} cout<<
"分配失敗!"
<}void
recovery()
else}}
cout<<
"**失敗!"
<}int
main()
}return0;
}
裝置管理 作業系統
裝置管理 裝置是計算機中的重要資源,裝置管理的主要任務是控制裝置和cpu之間進行i o操作。由於現代作業系統的外部裝置的多樣性和複雜性以及不同裝置需要不同的裝置處理程式,裝置管理成了作業系統中最複雜 最具有多樣性的部分。裝置管理模組在控制各類裝置和cpu進行i o操作的同時,還要盡可能的提高裝置與裝...
作業系統 裝置管理
讀寫乙個磁碟塊的時間的影響因素有 其中,尋道時間最長,因此磁碟排程的主要目標是使磁碟的平均尋道時間最短。2.1先來先服務fcfs first come first served 按照磁碟請求的順序進行排程。優點是公平和簡單。缺點也很明顯,因為未對尋道做任何優化,使平均尋道時間可能較長。2.2最短尋道...
作業系統之裝置管理
讀寫乙個磁碟塊的時間的影響因素有 其中,尋道時間最長,因此磁碟排程的主要目標是使磁碟的平均尋道時間最短。fcfs,first come first served 按照磁碟請求的順序進行排程。優點是公平和簡單。缺點也很明顯,因為未對尋道做任何優化,使平均尋道時間可能較長。sstf,shortest s...