




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、沈陽工程學(xué)院學(xué)生實(shí)驗(yàn)報(bào)告(課程名稱:操作系統(tǒng))實(shí)驗(yàn)題目:可變分區(qū)存儲(chǔ)管理班級(jí)學(xué)號(hào)姓名地 點(diǎn) f612指導(dǎo)教師實(shí)驗(yàn)日期:一、實(shí)驗(yàn)?zāi)康耐ㄟ^首次適應(yīng)算法、最佳適應(yīng)算法與最壞適應(yīng)算法實(shí)現(xiàn)主存空間的分配,可以使讀者可好地理解存儲(chǔ)分配算法。二、實(shí)驗(yàn)環(huán)境硬件環(huán)境:Intel Pentium Processor 1.8G ,512M 內(nèi)存,windows 操作系統(tǒng)軟件環(huán)境:vc+6、0或Turbo C三、實(shí)驗(yàn)內(nèi)容與要求實(shí)驗(yàn)原理:可變分區(qū)方式就是按作業(yè)需要的主存空間大小來分區(qū)。當(dāng)裝入一個(gè)作業(yè)時(shí),首先要查瞧就是否有足夠的空閑空間來分配 ,若有則按指定的分配方式進(jìn)行分配 ;否則作業(yè)不能 裝入。隨著作業(yè)的裝入與撤離主
2、存空間被分為若干個(gè)大大小小的不連續(xù)的區(qū)間,為了表明各區(qū)間的狀態(tài)可以用一個(gè)內(nèi)存分區(qū)表如表 1所示來表示。表1內(nèi)存分區(qū)表起始地址長(zhǎng)度標(biāo)志120k20k作業(yè)1200k50k空閑這樣我們可以定義一個(gè)如下的結(jié)構(gòu)表示內(nèi)存分區(qū)信息。typedef struct nodeint start;起始地址int length;長(zhǎng)度char tag20;標(biāo)志job;可變分區(qū)的三種算法就就是為作業(yè)分配主存空間的方法。,并將作業(yè)裝入第一個(gè)滿足,并將作業(yè)裝入滿足條件的,并將作業(yè)裝入滿足條件的 首次適應(yīng)算法:在空閑區(qū)間中查詢滿足作業(yè)需要的空間 條件的空間中去。 最佳適應(yīng)算法:在空閑區(qū)間中查詢滿足作業(yè)需要的空間 空閑空間中最小
3、的一個(gè)空間中去。 最壞適應(yīng)算法:在空閑區(qū)間中查詢滿足作業(yè)需要的空間 空閑空間中最大的一個(gè)空間中去。從三種算法的說明可以瞧出,分配空間的過程主要可以分兩步 查詢所有滿足作業(yè)需求的空間塊。 按照指定的算法將作業(yè)裝入空間塊中。在操作的最初主存空間實(shí)際就就是一個(gè)大的空閑區(qū),不涉及到如何分配的問題。為直接模擬運(yùn)行一段時(shí)間后主存中出現(xiàn)了多個(gè)空閑塊的狀態(tài),題目要求從一個(gè)文件讀入空閑區(qū)表。在這里我們可以設(shè)計(jì)一個(gè)空閑區(qū)表文件的結(jié)構(gòu)為如表2所示:主要變量及函數(shù)說明如表 3所示。表3變量與函數(shù)說明表typedef struct node內(nèi)存塊結(jié)構(gòu)job frees空閑區(qū)表job occupys已分配區(qū)表free_q
4、uantity空閑區(qū)數(shù)量occupy_quantity已分配區(qū)數(shù)量void initial。初始化函數(shù)int readData()從文件讀入空閑表函數(shù)void sort()排序空閑表void view()顯示分區(qū)信息void earliest。最先適應(yīng)分配算法void excellent。最優(yōu)適應(yīng)分配算法void worst()最壞適應(yīng)算法mem、txt空閑表文件實(shí)驗(yàn)要求:編寫一段程序來模擬可變分區(qū)管理方法。要求能通過文件形式定義空閑區(qū)表;能隨意輸入作業(yè)及需要分配的空間;能分別使用首次適應(yīng)算法、 最佳適應(yīng)算法與最壞適應(yīng)算法對(duì) 輸入的作業(yè)進(jìn)行空間分配;能顯示系統(tǒng)空閑表與已分配空間表。四、實(shí)驗(yàn)過程
5、及結(jié)果分析#include#include#include#define max 100typedef struct nodeint start;int length;char tag20;job;job freesmax;job occupysmax;int free_quantity,occupy_quantity;int SIZE;void initial。 初始化函數(shù)int i;for(i=0;imax;i+)freesi、start=-1;freesi、length=0;strcpy(freesi、tag,free);occupysi、start=-1;occupysi、length
6、=0;strcpy(occupysi、tag,);free_quantity=0;occupy_quantity=0;void writedata()把分區(qū)函數(shù)寫入磁盤文件FILE *fp;char fname20;int i,j;printf(請(qǐng)輸入初始空I表文件名:n);scanf(%s,&fname);printf(現(xiàn)在進(jìn)行初始化空閑分區(qū)!n);printf(請(qǐng)輸入您要建立白空閑分區(qū)數(shù):n);scanf(%d”,&SIZE);for(i=0;iSIZE;i+)j=i+1;printf(輸入第d個(gè)分區(qū)的起始地址:n,j);scanf(%d,&freesi、start);printf(輸入第
7、%d個(gè)分區(qū)的長(zhǎng)度:n,j);scanf(%d,&freesi 、 length);if(fp=fopen(fname,wb)=NULL)printf(錯(cuò)誤,文件打不開,請(qǐng)檢查文件名n);for(i=0;iSIZE;i+)if(fwrite(&freesi,sizeof(struct node),1,fp)!=1)printf(文件寫入錯(cuò)誤!n);fclose(fp);void readdata()從文件讀入分區(qū)表函數(shù)FILE *fp;char fname20;printf(請(qǐng)輸入讀入空閑表文件名:); 輸入空閑表文件的文件名scanf(%s,&fname);if(fp=fopen(fname,
8、rb)=NULL)printf(錯(cuò)誤,文件打不開,請(qǐng)檢查文件名n);exit(0);elsefor(int i=0;iSIZE;i+)fread(&freesi,sizeof(struct node),1,fp);free_quantity+;fclose(fp);void sort()排序空閑表for(int i=0;ifree_quantity-1;i+)int t=i;for(int j=i+1;jfree_quantity;j+)if(freesj、start=freest、start)t=j; freesfree_quantity、start=freesi、start;freesfr
9、ee_quantity、length=freesi、length;freesi、start=freest、start;freesi、length=freest、length;freest、start=freesfree_quantity、start;freest、length=freesfree_quantity、length;void view()顯示分區(qū)信息printf(空閑分區(qū)表顯示如下:n);printf(起始地址t長(zhǎng)度t狀態(tài)標(biāo)志n);for(int i=0;ifree_quantity;i+)printf(%6dkt%10dkt%stn,freesi 、start,freesi、le
10、ngth,freesi、tag);printf(nn已分配分區(qū)表顯示如下:n);printf(起始地址t長(zhǎng)度t占用作業(yè)名n);for(int j=0;joccupy_quantity;j+)printf(%6dkt%10dkt%stn,occupysj 、start,occupysj、length,occupysj、tag);getchar();getchar();void earliest。首次適應(yīng)算法char jobname20;int joblength,f=0;int i,j;printf(請(qǐng)輸入彳乍業(yè)名:n);scanf(%s,&jobname);printf(輸入作業(yè)的長(zhǎng)度:n);
11、scanf(%d,&joblength);for(i=0;i=joblength)f=1;if(f=0)printf(n當(dāng)前沒有能滿足您申請(qǐng)長(zhǎng)度的空閑內(nèi)存,請(qǐng)稍候再試n);getchar();else找到了滿足的空間int t=0;j=0;while(t=0)if(freesj、length=joblength)t=1;j+;j-;occupysoccupy_quantity 、 start=freesj、 start;分配滿足條件的空間strcpy(occupysoccupy_quantity 、 tag,jobname);occupysoccupy_quantity、length=jobl
12、ength;occupy_quantity+;if(freesj、lengthjoblength)freesj、start+=joblength;freesj、length-=joblength;else for(i=j;ifree_quantity-1;i+)freesi、start=freesi+1、start;freesi、length=freesi+1、length;free_quantity-;printf(作業(yè)申請(qǐng)內(nèi)存空間成功!n);getchar();getchar();void excellent。最佳適應(yīng)法char jobname20;int joblength,f=0;in
13、t i,j;printf(請(qǐng)輸入作業(yè)名:n);scanf(%s,&jobname);printf(輸入作業(yè)的長(zhǎng)度:n);for(i=0;i=joblength)f=1;if(f=0)printf(n當(dāng)前沒有能滿足您申請(qǐng)長(zhǎng)度的空閑內(nèi)存,請(qǐng)稍候再試n);getchar();else找到了滿足的空間int t=0;j=0;while(t=0)if(freesj、length=joblength)t=1;j+;j-;for(i=0;i=joblength&freesi 、lengthjoblength)freesj、start+=joblength;freesj、length-=joblength;e
14、lsefor(i=j;ifree_quantity-1;i+)freesi、start=freesi+1、start;freesi、length=freesi+1、length;free_quantity-;printf(作業(yè)申請(qǐng)內(nèi)存空間成功!n);getchar();getchar();void worst()char jobname20;int joblength,f=0;int i,j;printf(請(qǐng)輸入彳乍業(yè)名:n);scanf(%s,&jobname);printf(輸入作業(yè)的長(zhǎng)度:n);scanf(%d,&joblength);for(i=0;i=joblength)f=1;if
15、(f=0)printf(n當(dāng)前沒有能滿足您申請(qǐng)長(zhǎng)度的空閑內(nèi)存,請(qǐng)稍候再試n);getchar();getchar();else找到了滿足的空間int t=0;j=0;while(t=0)if(freesj、length=joblength)t=1;j+;j-;for(i=0;i=joblength&freesi 、lengthfreesj、length)j=i;occupysoccupy_quantity、 start=freesj、 start; 分配空閑空間strcpy(occupysoccupy_quantity 、 tag,jobname);occupysoccupy_quantity
16、、length=joblength;occupy_quantity+;if(freesj、lengthjoblength)freesj、start+=joblength;freesj、length-=joblength;elsefor(i=j;ifree_quantity-1;i+)freesi、start=freesi+1、start;freesi、length=freesi+1、length;free_quantity-;printf(作業(yè)申請(qǐng)內(nèi)存空間成功!n);getchar();getchar();void main()initial。;int n;writedata();system
17、(cls);readdata();for(;)sort(); printf(*n);printf(*n);printf(*可變分區(qū)存儲(chǔ)管理系統(tǒng)*n);printf(*n);printf(*1、顯示空閑表與分配表*n);printf(*2、首次適應(yīng)算法(FF)*n);printf(*3、最佳適應(yīng)算法(BF)*n);printf(*4、最壞適應(yīng)算法(WF)*n);printf(*0、退出系統(tǒng)*n);printf(*n);printf(*n);printf(請(qǐng)輸入您要選擇的項(xiàng)目:n);scanf(%d,&n);for(;)if(n4)printf(沒有這個(gè)選項(xiàng),請(qǐng)重新輸入!);scanf(%d,&n
18、);elsebreak;switch(n)case 0:printf(感謝您的使用!再見!n);exit(0);case 1:view();break;case 2:earliest();break;case 3:excellent();break;case 4:worst();break;system(cls);建立文件以adc為名字的文件輸入如圖1所示c、*11 : Pr ogr a* F iL es Bz crosof I Vm suaJL S twid.1 oVByBx-oj eelsebng hk ext*請(qǐng)輸入初始空閑表土耳名,adc現(xiàn)在進(jìn)行初始化空閑分區(qū)?請(qǐng)輸入標(biāo)要建立的空的分區(qū)
19、數(shù):1建立文件adc建立3個(gè)空閑分區(qū)起始地址與行實(shí)現(xiàn)如圖2所示:* 1J : iPr o gr aa F lLc s VBi ce- oso t Vi. snaJL S-tu 分(F F F B W/X閑應(yīng)應(yīng)應(yīng)統(tǒng)空嚕適系奏隼出顯百日瞽取退 12 3 4 0困分區(qū)表顯示如下;3據(jù)地址 長(zhǎng)度3米8去1皿圖3顯示空閑表與分配表執(zhí)行首次算法后,建立的空閑表長(zhǎng)度分別為3 8 10,申請(qǐng)一個(gè)名為a長(zhǎng)度為5的作業(yè)故首次適應(yīng)算法從第二個(gè)空閑表首地址為3開始,運(yùn)行實(shí)現(xiàn)如圖4所示已分配分區(qū)表顯示如下,長(zhǎng)度 3k 3k 10k占用作業(yè)名狀態(tài)標(biāo)志F ree f r&e Fi*ec起始地址Hk 8k llJc*可變分區(qū)存儲(chǔ)管理系統(tǒng)*MKe= *D iProgrsL V al esXll i err osot. i stlslL S t-udi. o HrFr oj ec tsllLbl) ebngXlilL- exe*表己 臼F F F F B。 ZTZ ( c C 表itst 鬧應(yīng)應(yīng)應(yīng)統(tǒng) 空適適適系 任庫(kù)出 顯首日皆取退 12 3 4 0請(qǐng)輸入您要選擇的項(xiàng)目;1空闈分區(qū)表顯示如下叱起始地址31 酉F F Fq F B- yAX c 和WK 闈應(yīng)應(yīng)應(yīng)統(tǒng) 至霍適系 灸轉(zhuǎn)出 顯首蜃取退 12 3 4 0請(qǐng)輸入您要選擇的項(xiàng)目:1空閑分區(qū)表顯示如下;自地址0kBk15k長(zhǎng)度3k3k6 k狀態(tài)標(biāo)志 f pee fr
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 推動(dòng)雙減政策與教育質(zhì)量雙提升方案
- 推動(dòng)農(nóng)業(yè)農(nóng)村現(xiàn)代化的實(shí)施路徑
- 肉制品行業(yè)發(fā)展趨勢(shì)與市場(chǎng)前景解析
- 農(nóng)機(jī)更新升級(jí)行動(dòng)計(jì)劃
- 果蔬消毒柜市場(chǎng)發(fā)展動(dòng)態(tài)與未來前景分析
- 物料需求計(jì)劃實(shí)現(xiàn)
- 銀行投資理財(cái)產(chǎn)品試題及答案2025年詳解
- 理財(cái)軟件的使用技巧試題及答案
- 2025年CFA考試新經(jīng)濟(jì)環(huán)境試題及答案
- 數(shù)據(jù)驅(qū)動(dòng)的生產(chǎn)決策計(jì)劃
- 2025中國(guó)新型儲(chǔ)能行業(yè)發(fā)展白皮書
- 家庭車輛掛別人名下協(xié)議書范文
- 小學(xué)四年級(jí)上冊(cè)數(shù)學(xué)課后訓(xùn)練題:《數(shù)字編碼》
- 長(zhǎng)城牌通用潤(rùn)滑油、脂替代其他品牌產(chǎn)品清單
- API-682密封系統(tǒng)-中英文對(duì)照版
- 電動(dòng)葫蘆出廠檢驗(yàn)報(bào)告
- 挖機(jī)大中斗油封資料,液壓泵資料
- 技術(shù)開發(fā)部個(gè)人技能矩陣圖
- Hillstone設(shè)備密碼與配置恢復(fù)方法
- 二年級(jí)下冊(cè)語文教案第六單元部編版
評(píng)論
0/150
提交評(píng)論