版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(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ù)結(jié)構(gòu)及算法 操作系統(tǒng)設(shè)置“設(shè)備分配表”,用來記錄計算機(jī)系統(tǒng)所配置的獨(dú)占設(shè)備類型、臺數(shù)以及分配情況等。為了實(shí)現(xiàn)設(shè)備分配的獨(dú)立性,一般設(shè)備分配表可以由“設(shè)備類表”和“設(shè)備表”兩部分組成。設(shè)備類表記錄系統(tǒng)中的各類設(shè)備,每類設(shè)備占用一個登記欄,登記該類設(shè)備的總臺數(shù)、當(dāng)前有幾臺設(shè)備空閑以及該類設(shè)備在設(shè)備表中的起始地址。每一臺設(shè)備在“設(shè)備表”中占用一個
2、登記項(xiàng),同類的若干臺設(shè)備連續(xù)登記在設(shè)備表中。設(shè)備表中登記每一臺設(shè)備的絕對號(物理設(shè)備名)、設(shè)備的好壞情況、設(shè)備是否分配、設(shè)備被哪一個作業(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ù)結(jié)構(gòu)定義如下: #define n 4 struct char typ
3、e4;/*設(shè)備類名*/ int count;/*擁有設(shè)備臺數(shù)*/ int remain;/*某類設(shè)備現(xiàn)存可用的臺數(shù)*/ int address;/*該類設(shè)備在設(shè)備表中的起始地址*/ equiptypen/*設(shè)備類表定義,假定系統(tǒng)有 n個設(shè)備類型* 設(shè)備表的數(shù)據(jù)結(jié)構(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 inu
4、mber;/*設(shè)備相對號*/ equipmentm/*設(shè)備表定義,假定系統(tǒng)有m個設(shè)備*/ 當(dāng)作業(yè)申請某類設(shè)備時,系統(tǒng)先查“設(shè)備類表”,如果該設(shè)備的現(xiàn)存臺數(shù)可以滿足申請要求,則從“設(shè)各類表”中得到該類設(shè)備的設(shè)備表起始地址,然后找到“設(shè)備表”中該類設(shè)備的起始地址,依次查詢該類設(shè)備的每一個登記項(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è)備表,比較每一項(xiàng),找到占用作業(yè)名與運(yùn)行完作業(yè)的作業(yè)名的一欄
5、,將這一欄的“已未分配”置為“未分配”.然后將設(shè)備表中對應(yīng)設(shè)備類的“現(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<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è)備臺數(shù)*/int remain; /*現(xiàn)存的可用設(shè)備臺數(shù)*/int address; /*該類設(shè)備在設(shè)備表中的起始地址*/equiptypen; /*設(shè)備類表定義,假定系統(tǒng)有n個設(shè)備類型*/structint number; /*設(shè)備絕對號*/int status; /*設(shè)備好壞狀態(tài)*/int remain; /*設(shè)備是否已分配*/char jobname4; /*占有設(shè)備的作業(yè)
7、名*/int lnumber; /*設(shè)備相對號*/equipmentm; /*設(shè)備表定義,假定系統(tǒng)有m個設(shè)備*/ allocate(char *J,char *type,int cc)int i,t,j; /*查詢該類設(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)存可用臺數(shù)不足*/ printf(
8、"該類設(shè)備不足,分配失敗!"); return(false); t=equiptypei.address; /* 取出該類設(shè)備在設(shè)備表中的起始地址*/while(!(equipmentt.status=1 && equipmentt.remain=0)t+; /*填寫作業(yè)名、相對號,狀態(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è)備類初始化:(請輸入相應(yīng)設(shè)備的數(shù)量,當(dāng)前空閑設(shè)備數(shù)量,設(shè)備表起始地址)n ");for(i=0;i<4;i+) /*設(shè)備類表初始
11、化:*/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",&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è)備相對號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è)名及對應(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("絕對號 好/壞 已/未分配 占用作業(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); 測試(運(yùn)行時屏幕顯示,紅色字表示從鍵盤輸入) 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è)備表: 絕對號 好壞 已未分配 占用作業(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一顯示 選擇功能項(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è)備相對
17、號J1 input 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
18、4 3 tape 1 1 輸出設(shè)備表:絕對號 好壞 已未分配 占用作業(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一顯示選擇功能項(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等.壓縮文件請下載最新的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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年礦粉交易合同范例
- 2024年度房屋代持與房屋租賃合同續(xù)簽協(xié)議書3篇
- 2024年度期貨市場委托交易合作協(xié)議模板3篇
- 拯救水果精靈課程設(shè)計
- 泄洪閘加固課程設(shè)計
- 2024年美團(tuán)外賣平臺合作開發(fā)合同范本3篇
- 電工電課程設(shè)計
- 2024年擔(dān)保規(guī)則四種方式實(shí)施細(xì)則合同3篇
- 直拳訓(xùn)練課程設(shè)計
- 空調(diào)課程設(shè)計前言
- 2024年1月電大國家開放大學(xué)期末考試試題及答案:人類行為與社會環(huán)境
- 2024年貴安新區(qū)產(chǎn)業(yè)發(fā)展控股集團(tuán)有限公司招聘筆試參考題庫含答案解析
- 山東省青島市李滄區(qū)2023-2024學(xué)年七年級上學(xué)期期末道德與法治試題
- 欣旺達(dá)質(zhì)量體系+社會責(zé)任+安規(guī)體系審核(QSA)
- 小學(xué)六年級數(shù)學(xué)100道題解分?jǐn)?shù)方程
- 設(shè)備工程行業(yè)年終述職報告總結(jié)
- 如何在職場中保持工作與生活的平衡
- 《軍事理論》教案第五章
- 團(tuán)隊能力建設(shè)分析報告
- 數(shù)字化轉(zhuǎn)型工作手冊(圖文版)
- 江蘇南京鼓樓區(qū)2023-2024九年級上學(xué)期期末化學(xué)試卷及答案
評論
0/150
提交評論