




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、實(shí)驗(yàn)五獨(dú)占設(shè)備的分配和回收模擬一. 目的要求通過模擬獨(dú)占設(shè)備的分配和回收,了解操作系統(tǒng)對(duì)設(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ù)結(jié)構(gòu)及算法 操作系統(tǒng)設(shè)置“設(shè)備分配表”,用來記錄計(jì)算機(jī)系統(tǒng)所配置的獨(dú)占設(shè)備類型、臺(tái)數(shù)以及分配情況等。為了實(shí)現(xiàn)設(shè)備分配的獨(dú)立性,一般設(shè)備分配表可以由“設(shè)備類表”和“設(shè)備表”兩部分組成。設(shè)備類表記錄系統(tǒng)中的各類設(shè)備,每類設(shè)備占用一個(gè)登記欄,登記該類設(shè)備的總臺(tái)數(shù)、當(dāng)前有幾臺(tái)設(shè)備空閑以及該類設(shè)備在設(shè)備表中的起始地址。每一臺(tái)設(shè)備在“設(shè)備表”中占用一個(gè)
2、登記項(xiàng),同類的若干臺(tái)設(shè)備連續(xù)登記在設(shè)備表中。設(shè)備表中登記每一臺(tái)設(shè)備的絕對(duì)號(hào)(物理設(shè)備名)、設(shè)備的好壞情況、設(shè)備是否分配、設(shè)備被哪一個(gè)作業(yè)占用和設(shè)備相對(duì)號(hào)(邏輯設(shè)備名)。設(shè)備類表設(shè)備類擁有設(shè)備臺(tái)數(shù)現(xiàn)存好的設(shè)備設(shè)備表相對(duì)地址輸入機(jī)220打印機(jī)332磁盤445磁帶機(jī)119設(shè)備表絕對(duì)號(hào)好/壞已/未分配占用作業(yè)名相對(duì)號(hào)1好未分配2好未分配3好未分配4好未分配5好未分配6好未分配7好未分配8好未分配9好未分配10好未分配 在設(shè)備表中,用“1”表示設(shè)備好,用“0”表示設(shè)備壞;用“1”表示設(shè)備已分配,用“0”表示設(shè)備末分配。 設(shè)備類表的數(shù)據(jù)結(jié)構(gòu)定義如下: #define n 4 struct char typ
3、e4;/*設(shè)備類名*/ int count;/*擁有設(shè)備臺(tái)數(shù)*/ int remain;/*某類設(shè)備現(xiàn)存可用的臺(tái)數(shù)*/ int address;/*該類設(shè)備在設(shè)備表中的起始地址*/ equiptypen/*設(shè)備類表定義,假定系統(tǒng)有 n個(gè)設(shè)備類型* 設(shè)備表的數(shù)據(jù)結(jié)構(gòu)定義如下: #define m 10 struct Int number;/*設(shè)備絕對(duì)號(hào)*/ int status;/*設(shè)備好環(huán)狀態(tài),“o”表示設(shè)備壞;用“ l”表示設(shè)備好*/ int remain;/*設(shè)備是否已分配,用“ l”介表示已分配,用“o”表示末分配*/ char jobname4;/*占有設(shè)備的作業(yè)名*/ int inu
4、mber;/*設(shè)備相對(duì)號(hào)*/ equipmentm/*設(shè)備表定義,假定系統(tǒng)有m個(gè)設(shè)備*/ 當(dāng)作業(yè)申請(qǐng)某類設(shè)備時(shí),系統(tǒng)先查“設(shè)備類表”,如果該設(shè)備的現(xiàn)存臺(tái)數(shù)可以滿足申請(qǐng)要求,則從“設(shè)各類表”中得到該類設(shè)備的設(shè)備表起始地址,然后找到“設(shè)備表”中該類設(shè)備的起始地址,依次查詢?cè)擃愒O(shè)備的每一個(gè)登記項(xiàng),找出“好的且末分配”的設(shè)備分配給該作業(yè).分配后要修改設(shè)備類表中的現(xiàn)存臺(tái)數(shù),把分配給該作業(yè)的設(shè)備狀態(tài)改為“已分配”,且填上占用該設(shè)備的作業(yè)的作業(yè)名和程序中定義的相對(duì)號(hào),最后,把設(shè)備的絕對(duì)號(hào)與相對(duì)號(hào)的對(duì)應(yīng)關(guān)系通知用戶. 當(dāng)作業(yè)運(yùn)行完回收設(shè)備時(shí),首先要查設(shè)備表,比較每一項(xiàng),找到占用作業(yè)名與運(yùn)行完作業(yè)的作業(yè)名的一欄
5、,將這一欄的“已未分配”置為“未分配”.然后將設(shè)備表中對(duì)應(yīng)設(shè)備類的“現(xiàn)存臺(tái)數(shù)”增1. 實(shí)驗(yàn)中,首先要建立“設(shè)備類表”和“設(shè)備表”,假設(shè)系統(tǒng)的模擬設(shè)備如下表:設(shè)備類表設(shè)備類擁有設(shè)備臺(tái)數(shù)現(xiàn)存好的設(shè)備設(shè)備表相對(duì)地址輸入機(jī)220打印機(jī)332磁盤445磁帶機(jī)119設(shè)備表絕對(duì)號(hào)好/壞已/未分配占用作業(yè)名相對(duì)號(hào)0好未分配1好未分配2好未分配3好未分配4好未分配5好未分配6好未分配7好未分配8好未分配9好未分配分配設(shè)備要求輸入作業(yè)名、設(shè)備類名和相對(duì)號(hào),回收設(shè)備要求輸入作業(yè)名和設(shè)備類名。五實(shí)驗(yàn)源代碼#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; /*設(shè)備類名*/int count; /*擁有設(shè)備臺(tái)數(shù)*/int remain; /*現(xiàn)存的可用設(shè)備臺(tái)數(shù)*/int address; /*該類設(shè)備在設(shè)備表中的起始地址*/equiptypen; /*設(shè)備類表定義,假定系統(tǒng)有n個(gè)設(shè)備類型*/structint number; /*設(shè)備絕對(duì)號(hào)*/int status; /*設(shè)備好壞狀態(tài)*/int remain; /*設(shè)備是否已分配*/char jobname4; /*占有設(shè)備的作業(yè)
7、名*/int lnumber; /*設(shè)備相對(duì)號(hào)*/equipmentm; /*設(shè)備表定義,假定系統(tǒng)有m個(gè)設(shè)備*/ allocate(char *J,char *type,int cc)int i,t,j; /*查詢?cè)擃愒O(shè)備*/i=0;while(i<n&&strcmp(equiptypei.type,type)!=0)i+;if(i>=n) /*沒有找到該類設(shè)備*/ printf("無該類設(shè)備,設(shè)備分配失敗!"); return(false); if(equiptypei.remain<1) /*所需設(shè)備現(xiàn)存可用臺(tái)數(shù)不足*/ printf(
8、"該類設(shè)備不足,分配失敗!"); return(false); t=equiptypei.address; /* 取出該類設(shè)備在設(shè)備表中的起始地址*/while(!(equipmentt.status=1 && equipmentt.remain=0)t+; /*填寫作業(yè)名、相對(duì)號(hào),狀態(tài)改為已分配*/equiptypei.remain-;equipmentt.remain=1;strcpy(equipmentt.jobname,J);equipmentt.lnumber=cc; /*設(shè)備分配函數(shù)結(jié)束*/ 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) /*沒有找到該類設(shè)備*/ printf("無該類設(shè)備,設(shè)備回收失敗!");return(false); t=equiptypei.address; /*取出該類設(shè)備在設(shè)備表中的起始地址*/j=equiptypei.count; /*取出該類設(shè)備的數(shù)量*/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"); /*設(shè)備回收函數(shù)結(jié)束*/void main( )char J4;int i,mm,a;char type10;printf("設(shè)備類初始化:(請(qǐng)輸入相應(yīng)設(shè)備的數(shù)量,當(dāng)前空閑設(shè)備數(shù)量,設(shè)備表起始地址)n ");for(i=0;i<4;i+) /*設(shè)備類表初始
11、化:*/printf("請(qǐng)輸入相應(yīng)設(shè)備類名稱:"); scanf("%s",&equiptypei.type); printf("請(qǐng)輸入相應(yīng)設(shè)備的數(shù)量:"); scanf("%d",&equiptypei.count); printf("請(qǐng)輸入當(dāng)前空閑設(shè)備數(shù)量:"); scanf("%d",&equiptypei.remain); printf("請(qǐng)輸入設(shè)備表起始地址:"); scanf("%d",&eq
12、uiptypei.address);for(i=0;i<10;i+) /*設(shè)備表初始化:*/equipmenti.number=i;equipmenti.status=1;equipmenti.remain=0;while(1)printf("n0-退出,1-分配,2-回收,3-顯示"); printf("n選擇功能項(xiàng)(0-3):"); scanf("%d",&a); switch(a) case 0 : /*a=0程序結(jié)束*/ exit(0); case 1 : /*a=1分配設(shè)備*/ printf("輸入作
13、業(yè)名、作業(yè)所需設(shè)備類和設(shè)備相對(duì)號(hào)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); /*輸入要回收的作業(yè)名及對(duì)應(yīng)的設(shè)備類*/ reclaim(J,type); /*回收設(shè)備*/ break; case 3: /*a=3 輸出設(shè)備類表和設(shè)備表的內(nèi)容*/ printf("輸出設(shè)備類表!n&
14、quot;); /*輸出設(shè)備類表內(nèi)容*/ printf(" 設(shè)備類型 設(shè)備總量 空閑好設(shè)備n"); for(i=0;i<n;i+)printf("%9s%16d%22d%14dn",equiptypei.type,equiptypei.count,equiptypei.remain,equiptypei.address); printf("輸出設(shè)備表:n"); /*輸出設(shè)備表內(nèi)容*/ printf("絕對(duì)號(hào) 好/壞 已/未分配 占用作業(yè)名 相對(duì)號(hào)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); 測(cè)試(運(yùn)行時(shí)屏幕顯示,紅色字表示從鍵盤輸入) 0一退出,l一分配,2一回收,3一顯示 選擇功能項(xiàng)(0一3):3輸出設(shè)備類表: 設(shè)備類型 設(shè)備總量 空閑好設(shè)備 input 2 2 printer 3 3 disk 4 4 tape 1 1 輸出設(shè)備表: 絕對(duì)號(hào) 好壞 已未分配 占用作業(yè)名 相對(duì)號(hào) 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一顯示 選擇功能項(xiàng)(0-3):l輸人作業(yè)名、作業(yè)所需設(shè)備類和設(shè)備相對(duì)號(hào)J1 ddd 2無該類設(shè)備,設(shè)備分配失敗0一退出,l一分配,2一回收,3一顯示選擇功能項(xiàng)(0-3):l輸人作業(yè)名、作業(yè)所需設(shè)各類和設(shè)備相對(duì)號(hào)J1 input 1分配成功0-退出,l一分配,2一回收,3一顯示選擇功能項(xiàng)(0-3):l輸入作業(yè)名、作業(yè)所需設(shè)備類和設(shè)備相對(duì)號(hào)J2 input 3分配成功0一退出,l一分配,2一回收,3一顯示選擇功能項(xiàng)(0-3):l輸人作業(yè)名、作業(yè)所需設(shè)各類和設(shè)備相對(duì)
17、號(hào)J1 input 2該類設(shè)備不足,分配失敗0一退出,l一分配,2一回收,3一顯示選擇功能項(xiàng)(0-3):l輸入作業(yè)名、作業(yè)所需設(shè)備類和設(shè)備相對(duì)號(hào)J1 Printer l分配成功0一退出,l一分配,2一回收,3一顯示選擇功能項(xiàng)(0一3):1輸入作業(yè)名、作業(yè)所需設(shè)備類和設(shè)備相對(duì)號(hào)J1 Printer 2分配成功0一退出,l一分配,2一回收,3一顯示選擇功能項(xiàng)(0-3):1輸入作業(yè)名、作業(yè)所需設(shè)備類和設(shè)備相對(duì)號(hào)J4 disk 1分配成功0一退出, l一分配,2一回收,3一顯示選擇功能項(xiàng)(0一3):3輸出設(shè)備類表: 設(shè)備類型 設(shè)備總量 空閑好設(shè)備 input 2 0 printer 3 1 disk
18、4 3 tape 1 1 輸出設(shè)備表:絕對(duì)號(hào) 好壞 已未分配 占用作業(yè)名 相對(duì)號(hào) 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一顯示選擇功能項(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
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 技術(shù)支持工程學(xué)習(xí)員合同
- 2025《基站建設(shè)合同施工》
- 2025借款抵押合同模板
- 2025綜合布線維護(hù)合同模板
- 2025-2030團(tuán)購(gòu)產(chǎn)業(yè)園區(qū)定位規(guī)劃及招商策略咨詢報(bào)告
- 2025至2030中國(guó)全棉坯布行業(yè)供需趨勢(shì)及投資風(fēng)險(xiǎn)報(bào)告
- 2025-2030牛仔褲行業(yè)市場(chǎng)發(fā)展現(xiàn)狀及并購(gòu)重組策略與投融資研究報(bào)告
- 2025-2030中國(guó)掛面市場(chǎng)深度調(diào)查研究報(bào)告
- 安全培訓(xùn)教育機(jī)構(gòu)
- 腦損傷的護(hù)理
- 2024-2025學(xué)年滬教版七年級(jí)數(shù)學(xué)上冊(cè)復(fù)習(xí):分式(7大題型)(42道壓軸題專練)解析版
- 恒溫烙鐵焊接溫度驗(yàn)證報(bào)告
- 幼兒園獲獎(jiǎng)公開課:中班語(yǔ)言故事《快樂的夏天》課件
- 新教師科研能力提升措施
- 《現(xiàn)代農(nóng)業(yè)生物技術(shù)育種方法》課件
- 企業(yè)慈善捐贈(zèng)指引
- 2025年國(guó)能新疆化工有限公司招聘筆試參考題庫(kù)含答案解析
- 2025年國(guó)投洋浦港有限公司招聘筆試參考題庫(kù)含答案解析
- 康復(fù)家居活動(dòng)改造課件
- 在線醫(yī)療健康服務(wù)平臺(tái)使用合同
- 3D打印技術(shù)基礎(chǔ)知到智慧樹章節(jié)測(cè)試課后答案2024年秋武漢職業(yè)技術(shù)學(xué)院
評(píng)論
0/150
提交評(píng)論