實(shí)驗(yàn)五獨(dú)占設(shè)備的分配和回收模擬.._第1頁
實(shí)驗(yàn)五獨(dú)占設(shè)備的分配和回收模擬.._第2頁
實(shí)驗(yàn)五獨(dú)占設(shè)備的分配和回收模擬.._第3頁
實(shí)驗(yàn)五獨(dú)占設(shè)備的分配和回收模擬.._第4頁
實(shí)驗(yàn)五獨(dú)占設(shè)備的分配和回收模擬.._第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

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

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

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

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

5、備類的“現(xiàn)存臺數(shù)增1.實(shí)驗(yàn)中,首先要建立“設(shè)備類表和“設(shè)備表,假設(shè)系統(tǒng)的模擬設(shè)備如下表:設(shè)備類表設(shè)備類擁有設(shè)備臺數(shù)現(xiàn)存好的設(shè)備設(shè)備表相對地址輸入機(jī)220打印機(jī)332磁盤445磁帶機(jī)119設(shè)備表絕對號好/壞已/未分配占用作業(yè)名相對號0好未分配1好未分配2好未分配3好未分配4好未分配5好未分配6好未分配7好未分配8好未分配9好未分配分配設(shè)備要求輸入作業(yè)名、設(shè)備類名和相對號,回收設(shè)備要求輸入作業(yè)名和設(shè)備類名。五實(shí)驗(yàn)源代碼*include*include*include*define false 0*define true 1*define n 4*define m 10structchar type

6、10; /*設(shè)備類名*/int count; /*擁有設(shè)備臺數(shù)*/int remain; /*現(xiàn)存的可用設(shè)備臺數(shù)*/int address; /*該類設(shè)備在設(shè)備表中的起始地址*/equiptypen; /*設(shè)備類表定義,假定系統(tǒng)有n個(gè)設(shè)備類型*/structint number; /*設(shè)備絕對號*/int status; /*設(shè)備好壞狀態(tài)*/int remain; /*設(shè)備是否已分配*/char jobname4; /*占有設(shè)備的作業(yè)名*/int lnumber; /*設(shè)備相對號*/equipmentm; /*設(shè)備表定義,假定系統(tǒng)有m個(gè)設(shè)備*/ allocate(char *J,char *t

7、ype,int cc)int i,t,j; /*查詢該類設(shè)備*/i=0;while(i=n) /*沒有找到該類設(shè)備*/ printf(無該類設(shè)備,設(shè)備分配失敗!); return(false); if(equiptypei.remain1) /*所需設(shè)備現(xiàn)存可用臺數(shù)缺乏*/ printf(該類設(shè)備缺乏,分配失敗!); return(false); t=equiptypei.address; /* 取出該類設(shè)備在設(shè)備表中的起始地址*/while(!(equipmentt.status=1 & equipmentt.remain=0)t+; /*填寫作業(yè)名、相對號,狀態(tài)改為已分配*/equipty

8、pei.remain-;equipmentt.remain=1;strcpy(equipmentt.jobname,J);equipmentt.lnumber=cc; /*設(shè)備分配函數(shù)完畢*/ reclaim(char *J,char *type)int i,t,j,k,nn;i=0;while(i=n) /*沒有找到該類設(shè)備*/ printf(無該類設(shè)備,設(shè)備回收失敗!);return(false); t=equiptypei.address; /*取出該類設(shè)備在設(shè)備表中的起始地址*/j=equiptypei.count; /*取出該類設(shè)備的數(shù)量*/k=0;nn=t+j;for(;tnn;t

9、+)if(strcmp(equipmentt.jobname,J)=0&equipmentt.remain=1)equipmentt.remain=0;k+;equiptypei.remain= equiptypei.remain+k;if(k=0)printf(The jop havent use this kind of equitmenttype!/n); /*設(shè)備回收函數(shù)完畢*/void main( )char J4;int i,mm,a;char type10;printf(設(shè)備類初始化:請輸入相應(yīng)設(shè)備的數(shù)量,當(dāng)前空閑設(shè)備數(shù)量,設(shè)備表起始地址n );for(i=0;i4;i+) /*

10、設(shè)備類表初始化:*/printf(請輸入相應(yīng)設(shè)備類名稱:); scanf(%s,&equiptypei.type); printf(請輸入相應(yīng)設(shè)備的數(shù)量:); scanf(%d,&equiptypei.count); printf(請輸入當(dāng)前空閑設(shè)備數(shù)量:); scanf(%d,&equiptypei.remain); printf(請輸入設(shè)備表起始地址:); scanf(%d,&equiptypei.address);for(i=0;i10;i+) /*設(shè)備表初始化:*/equipmenti.number=i;equipmenti.status=1;equipmenti.remain=0;w

11、hile(1)printf(n0-退出,1-分配,2-回收,3-顯示); printf(n選擇功能項(xiàng)(0-3):); scanf(%d,&a); switch(a) case 0 : /*a=0程序完畢*/ e*it(0); case 1 : /*a=1分配設(shè)備*/ printf(輸入作業(yè)名、作業(yè)所需設(shè)備類和設(shè)備相對號n); scanf(%s%s%d,J,type,&mm); allocate(J,type,mm); /*分配設(shè)備*/ break; case 2: /*a=2回收設(shè)備*/ printf(輸入作業(yè)名和作業(yè)歸還的設(shè)備類n); scanf(%s%s,J,type); /*輸入要回收的

12、作業(yè)名及對應(yīng)的設(shè)備類*/ reclaim(J,type); /*回收設(shè)備*/ break; case 3: /*a=3 輸出設(shè)備類表和設(shè)備表的容*/ printf(輸出設(shè)備類表!n); /*輸出設(shè)備類表容*/ printf( 設(shè)備類型 設(shè)備總量 空閑好設(shè)備n); for(i=0;in;i+)printf(%9s%16d%22d%14dn,equiptypei.type,equiptypei.count,equiptypei.remain,equiptypei.address); printf(輸出設(shè)備表:n); /*輸出設(shè)備表容*/ printf(絕對號 好/壞 已/未分配 占用作業(yè)名 相對號

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

14、1 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一顯示選擇功能項(xiàng)0-3:l輸人作業(yè)名、作業(yè)所需設(shè)備類和設(shè)備相對號J1 ddd 2無該類設(shè)備,設(shè)備分配失敗0一退出,l一分配,2一回收,3一顯示選擇功能項(xiàng)0-3:l輸人作業(yè)名、作業(yè)所需設(shè)各類和設(shè)備相對號J1 input 1分配成功0-退出,l一分配,2一回收,3一顯示選擇功能項(xiàng)0-3:l輸入作業(yè)名、作業(yè)所需設(shè)備類和設(shè)備相對號J2 input 3分配成功0一退出,l一分配,2一回收,3一顯示選擇功能項(xiàng)0-3:l輸人作業(yè)名、作業(yè)所需設(shè)各類和設(shè)備相對號J1 inp

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

16、絕對號好壞已未分配占用作業(yè)名相對號0 1 1 J1 1 1 1 1 J2 3 2 1 1 J1 13 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 00一退出,l一分配,2一回收,3一顯示選擇功能項(xiàng)0一3:2輸入作業(yè)名和作業(yè)歸還的設(shè)備類J1 disk該作業(yè)沒有使用該類設(shè)備0一退出,l一分配,2一回收,3一顯示選擇功能項(xiàng)0一3:2輸入作業(yè)名和作業(yè)歸還的設(shè)備類J1 ddf無該類設(shè)備,設(shè)備回收失敗0一退出,l一分配,2一回收,3一顯示選擇功能項(xiàng)0-3:2輸人作業(yè)名和作業(yè)歸還的設(shè)備類J1 printer回收成功0一退出,l一分配,2一回收,3一顯示選擇功能項(xiàng)0-3:2輸人作業(yè)名和作業(yè)歸還的設(shè)備類J1 input回收成功0一退出,回一分配,2一回收,3一顯示選擇功能項(xiàng)0-3:2輸人作業(yè)名和作業(yè)

溫馨提示

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

評論

0/150

提交評論