實驗五(獨占設備的分配和回收模擬)_第1頁
實驗五(獨占設備的分配和回收模擬)_第2頁
實驗五(獨占設備的分配和回收模擬)_第3頁
實驗五(獨占設備的分配和回收模擬)_第4頁
實驗五(獨占設備的分配和回收模擬)_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、實驗五獨占設備的分配和回收模擬一. 目的要求通過模擬獨占設備的分配和回收,了解操作系統(tǒng)對設備資源組織管理和分配、回收過程,掌握設備管理的思想。二實驗任務編程模擬滿足設備獨立性的獨占設備的分配和回收。三實驗環(huán)境、設備vc+ 6.0 pc機四.實驗指導(一)數據結構及算法 操作系統(tǒng)設置“設備分配表”,用來記錄計算機系統(tǒng)所配置的獨占設備類型、臺數以及分配情況等。為了實現(xiàn)設備分配的獨立性,一般設備分配表可以由“設備類表”和“設備表”兩部分組成。設備類表記錄系統(tǒng)中的各類設備,每類設備占用一個登記欄,登記該類設備的總臺數、當前有幾臺設備空閑以及該類設備在設備表中的起始地址。每一臺設備在“設備表”中占用一個

2、登記項,同類的若干臺設備連續(xù)登記在設備表中。設備表中登記每一臺設備的絕對號(物理設備名)、設備的好壞情況、設備是否分配、設備被哪一個作業(yè)占用和設備相對號(邏輯設備名)。設備類表設備類擁有設備臺數現(xiàn)存好的設備設備表相對地址輸入機220打印機332磁盤445磁帶機119設備表絕對號好/壞已/未分配占用作業(yè)名相對號1好未分配2好未分配3好未分配4好未分配5好未分配6好未分配7好未分配8好未分配9好未分配10好未分配 在設備表中,用“1”表示設備好,用“0”表示設備壞;用“1”表示設備已分配,用“0”表示設備末分配。 設備類表的數據結構定義如下: #define n 4 struct char typ

3、e4;/*設備類名*/ int count;/*擁有設備臺數*/ int remain;/*某類設備現(xiàn)存可用的臺數*/ int address;/*該類設備在設備表中的起始地址*/ equiptypen/*設備類表定義,假定系統(tǒng)有 n個設備類型* 設備表的數據結構定義如下: #define m 10 struct Int number;/*設備絕對號*/ int status;/*設備好環(huán)狀態(tài),“o”表示設備壞;用“ l”表示設備好*/ int remain;/*設備是否已分配,用“ l”介表示已分配,用“o”表示末分配*/ char jobname4;/*占有設備的作業(yè)名*/ int inu

4、mber;/*設備相對號*/ equipmentm/*設備表定義,假定系統(tǒng)有m個設備*/ 當作業(yè)申請某類設備時,系統(tǒng)先查“設備類表”,如果該設備的現(xiàn)存臺數可以滿足申請要求,則從“設各類表”中得到該類設備的設備表起始地址,然后找到“設備表”中該類設備的起始地址,依次查詢該類設備的每一個登記項,找出“好的且末分配”的設備分配給該作業(yè).分配后要修改設備類表中的現(xiàn)存臺數,把分配給該作業(yè)的設備狀態(tài)改為“已分配”,且填上占用該設備的作業(yè)的作業(yè)名和程序中定義的相對號,最后,把設備的絕對號與相對號的對應關系通知用戶. 當作業(yè)運行完回收設備時,首先要查設備表,比較每一項,找到占用作業(yè)名與運行完作業(yè)的作業(yè)名的一欄

5、,將這一欄的“已未分配”置為“未分配”.然后將設備表中對應設備類的“現(xiàn)存臺數”增1. 實驗中,首先要建立“設備類表”和“設備表”,假設系統(tǒng)的模擬設備如下表:設備類表設備類擁有設備臺數現(xiàn)存好的設備設備表相對地址輸入機220打印機332磁盤445磁帶機119設備表絕對號好/壞已/未分配占用作業(yè)名相對號0好未分配1好未分配2好未分配3好未分配4好未分配5好未分配6好未分配7好未分配8好未分配9好未分配分配設備要求輸入作業(yè)名、設備類名和相對號,回收設備要求輸入作業(yè)名和設備類名。五實驗源代碼#include<stdio.h>#include<string.h>#include&l

6、t;stdlib.h>#define false 0#define true 1#define n 4#define m 10structchar type10; /*設備類名*/int count; /*擁有設備臺數*/int remain; /*現(xiàn)存的可用設備臺數*/int address; /*該類設備在設備表中的起始地址*/equiptypen; /*設備類表定義,假定系統(tǒng)有n個設備類型*/structint number; /*設備絕對號*/int status; /*設備好壞狀態(tài)*/int remain; /*設備是否已分配*/char jobname4; /*占有設備的作業(yè)

7、名*/int lnumber; /*設備相對號*/equipmentm; /*設備表定義,假定系統(tǒng)有m個設備*/ allocate(char *J,char *type,int cc)int i,t,j; /*查詢該類設備*/i=0;while(i<n&&strcmp(equiptypei.type,type)!=0)i+;if(i>=n) /*沒有找到該類設備*/ printf("無該類設備,設備分配失敗!"); return(false); if(equiptypei.remain<1) /*所需設備現(xiàn)存可用臺數不足*/ printf(

8、"該類設備不足,分配失敗!"); return(false); t=equiptypei.address; /* 取出該類設備在設備表中的起始地址*/while(!(equipmentt.status=1 && equipmentt.remain=0)t+; /*填寫作業(yè)名、相對號,狀態(tài)改為已分配*/equiptypei.remain-;equipmentt.remain=1;strcpy(equipmentt.jobname,J);equipmentt.lnumber=cc; /*設備分配函數結束*/ reclaim(char *J,char *type)

9、int i,t,j,k,nn;i=0;while(i<n&&strcmp(equiptypei.type,type)!=0)i+;if(i>=n) /*沒有找到該類設備*/ printf("無該類設備,設備回收失敗!");return(false); t=equiptypei.address; /*取出該類設備在設備表中的起始地址*/j=equiptypei.count; /*取出該類設備的數量*/k=0;nn=t+j;for(;t<nn;t+)if(strcmp(equipmentt.jobname,J)=0&&equip

10、mentt.remain=1)equipmentt.remain=0;k+;equiptypei.remain= equiptypei.remain+k;if(k=0)printf("The jop haven't use this kind of equitmenttype!/n"); /*設備回收函數結束*/void main( )char J4;int i,mm,a;char type10;printf("設備類初始化:(請輸入相應設備的數量,當前空閑設備數量,設備表起始地址)n ");for(i=0;i<4;i+) /*設備類表初始

11、化:*/printf("請輸入相應設備類名稱:"); scanf("%s",&equiptypei.type); printf("請輸入相應設備的數量:"); scanf("%d",&equiptypei.count); printf("請輸入當前空閑設備數量:"); scanf("%d",&equiptypei.remain); printf("請輸入設備表起始地址:"); scanf("%d",&eq

12、uiptypei.address);for(i=0;i<10;i+) /*設備表初始化:*/equipmenti.number=i;equipmenti.status=1;equipmenti.remain=0;while(1)printf("n0-退出,1-分配,2-回收,3-顯示"); printf("n選擇功能項(0-3):"); scanf("%d",&a); switch(a) case 0 : /*a=0程序結束*/ exit(0); case 1 : /*a=1分配設備*/ printf("輸入作

13、業(yè)名、作業(yè)所需設備類和設備相對號n"); scanf("%s%s%d",J,type,&mm); allocate(J,type,mm); /*分配設備*/ break; case 2: /*a=2回收設備*/ printf("輸入作業(yè)名和作業(yè)歸還的設備類n"); scanf("%s%s",J,type); /*輸入要回收的作業(yè)名及對應的設備類*/ reclaim(J,type); /*回收設備*/ break; case 3: /*a=3 輸出設備類表和設備表的內容*/ printf("輸出設備類表!n&

14、quot;); /*輸出設備類表內容*/ printf(" 設備類型 設備總量 空閑好設備n"); for(i=0;i<n;i+)printf("%9s%16d%22d%14dn",equiptypei.type,equiptypei.count,equiptypei.remain,equiptypei.address); printf("輸出設備表:n"); /*輸出設備表內容*/ printf("絕對號 好/壞 已/未分配 占用作業(yè)名 相對號n"); for(i=0;i<m;i+)printf(&q

15、uot;%3d%11d%15d%15s%9dn",equipmenti.number,equipmenti.status,equipmenti.remain,equipmenti.jobname,equipmenti.lnumber); 測試(運行時屏幕顯示,紅色字表示從鍵盤輸入) 0一退出,l一分配,2一回收,3一顯示 選擇功能項(0一3):3輸出設備類表: 設備類型 設備總量 空閑好設備 input 2 2 printer 3 3 disk 4 4 tape 1 1 輸出設備表: 絕對號 好壞 已未分配 占用作業(yè)名 相對號 0 1 0 0 1 1 0 0 2 1 0 0 3 1

16、0 0 4 1 0 0 5 1 0 0 6 1 0 0 7 1 0 0 8 1 0 0 9 1 0 0 0一退出,l一分配,2一回收,3一顯示 選擇功能項(0-3):l輸人作業(yè)名、作業(yè)所需設備類和設備相對號J1 ddd 2無該類設備,設備分配失敗0一退出,l一分配,2一回收,3一顯示選擇功能項(0-3):l輸人作業(yè)名、作業(yè)所需設各類和設備相對號J1 input 1分配成功0-退出,l一分配,2一回收,3一顯示選擇功能項(0-3):l輸入作業(yè)名、作業(yè)所需設備類和設備相對號J2 input 3分配成功0一退出,l一分配,2一回收,3一顯示選擇功能項(0-3):l輸人作業(yè)名、作業(yè)所需設各類和設備相對

17、號J1 input 2該類設備不足,分配失敗0一退出,l一分配,2一回收,3一顯示選擇功能項(0-3):l輸入作業(yè)名、作業(yè)所需設備類和設備相對號J1 Printer l分配成功0一退出,l一分配,2一回收,3一顯示選擇功能項(0一3):1輸入作業(yè)名、作業(yè)所需設備類和設備相對號J1 Printer 2分配成功0一退出,l一分配,2一回收,3一顯示選擇功能項(0-3):1輸入作業(yè)名、作業(yè)所需設備類和設備相對號J4 disk 1分配成功0一退出, l一分配,2一回收,3一顯示選擇功能項(0一3):3輸出設備類表: 設備類型 設備總量 空閑好設備 input 2 0 printer 3 1 disk

18、4 3 tape 1 1 輸出設備表:絕對號 好壞 已未分配 占用作業(yè)名 相對號 0 1 1 J1 1 1 1 1 J2 3 2 1 1 J1 1 3 1 1 J1 2 4 1 0 0 5 1 1 J4 1 6 1 0 0 7 1 0 0 8 1 0 0 9 1 0 0 0一退出,l一分配,2一回收,3一顯示選擇功能項(0一3):2輸入作業(yè)名和作業(yè)歸還的設備類J1 disk該作業(yè)沒有使用該類設備0一退出,l一分配,2一回收,3一顯示選擇功能項(0一3):2輸入作業(yè)名和作業(yè)歸還的設備類J1 ddf無該類設備,設備回收失敗0一退出,l一分配,2一回收,3一顯示選擇功能項(0-3):2輸人作業(yè)名和作業(yè)歸還的設備類J1 printer回收成功0一退出,l一分配,2一回收,3一顯示選擇功能項(0-3):2輸人作業(yè)名和作業(yè)歸還的設備類J1 input回收成功0一退出,回一分配,2一回收,3

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論