主存空間的分配與回收_第1頁
主存空間的分配與回收_第2頁
主存空間的分配與回收_第3頁
主存空間的分配與回收_第4頁
主存空間的分配與回收_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、甘肅政法學(xué)院本科生實(shí)驗(yàn)報(bào)告( 四 )姓名: 學(xué)院:公安技術(shù)學(xué)院專業(yè): 班級(jí): 實(shí)驗(yàn)課程名稱:計(jì)算機(jī)操作系統(tǒng) 實(shí)驗(yàn)日期: 2016 年 11 月 17 日開課時(shí)間: 2016-2017 學(xué)年 第一 學(xué)期甘肅政法學(xué)院實(shí)驗(yàn)管理中心印制實(shí)驗(yàn)題目主存空間分配與回收小組合作姓名班級(jí)學(xué) 號(hào)一、實(shí)驗(yàn)?zāi)康?、 掌握操作系統(tǒng)的主存空間分配與回收2、 了解其工作原理。二實(shí)驗(yàn)環(huán)境Windows系統(tǒng)下的VC+6.0三、實(shí)驗(yàn)內(nèi)容與步驟1、模擬在可變分區(qū)管理方式下采用最先適應(yīng)算法實(shí)現(xiàn)主存分配和回收。2、在VC+6.0 的操作軟件上建一個(gè)名字為liyongqian的工程名。3、用代碼模擬實(shí)現(xiàn)主存空間的分配與回收。(1)可變分

2、區(qū)方式是按作業(yè)需要的主存空間大小來分割分區(qū)的。當(dāng)要裝入一個(gè)作業(yè)時(shí),根據(jù)作業(yè)需要的主存量查看是否有足夠的空閑空間,若有,則按需要量分割一個(gè)分區(qū)分配給該作業(yè);若無,則作業(yè)不能裝入。隨著作業(yè)的裝入、撤離,主存空間被分成許多個(gè)分區(qū),有的分區(qū)被作業(yè)占用,而有的分區(qū)是空閑的為了說明哪些區(qū)是空閑的,可以用來裝入新作業(yè),必須要有一張空閑區(qū)說明表,格式如下:起 址長(zhǎng) 度狀 態(tài)第一欄14 K12 K未 分 配第二欄32 K96 K未 分 配MMMM其中,起址指出一個(gè)空閑區(qū)的主存起始地址。 長(zhǎng)度指出從起始地址開始的一個(gè)連續(xù)空閑的長(zhǎng)度。狀態(tài)有兩種狀態(tài),一種是“未分配”狀態(tài),指出對(duì)應(yīng)的由起址指出的某個(gè)長(zhǎng)度的區(qū)域是空閑區(qū)

3、。 (2) 當(dāng)有一個(gè)新作業(yè)要求裝入主存時(shí),必須查空閑區(qū)說明表,從中找出一個(gè)足夠大的空閑區(qū)。有時(shí)找到的空閑區(qū)可能大于作業(yè)需要量,這時(shí)應(yīng)把原來的空閑區(qū)變成兩部分:一部分分給作業(yè)占用;另一部分又成為一個(gè)較小的空閑區(qū)。為了盡量減少由于分割造成的空閑區(qū),而盡量保存高地址部分有較大的連續(xù)空閑區(qū)域,以利于大型作業(yè)的裝入。為此,在空閑區(qū)說明表中,把每個(gè)空閑區(qū)按其地址順序登記,即每個(gè)后繼的空閑區(qū)其起始地址總是比前者大。(3) 采用最先適應(yīng)算法(順序分配算法)分配主存空間。按照作業(yè)的需要量,查空閑區(qū)說明表,順序查看登記欄,找到第一個(gè)能滿足要求的空閑區(qū)。當(dāng)空閑區(qū)大于需要量時(shí),一部分用來裝入作業(yè),另一部分仍為空閑區(qū)登

4、記在空閑區(qū)說明表中。由于本實(shí)驗(yàn)是模擬主存的分配,所以把主存區(qū)分配給作業(yè)后并不實(shí)際啟動(dòng)裝入程序裝入作業(yè),而用輸出“分配情況”來代替。(4) 當(dāng)一個(gè)作業(yè)執(zhí)行結(jié)束撤離時(shí),作業(yè)所占的區(qū)域應(yīng)該歸還,歸還的區(qū)域如果與其它空閑區(qū)相鄰,則應(yīng)合成一個(gè)較大的空閑區(qū),登記在空閑區(qū)說明表中。(5) 請(qǐng)按最先適應(yīng)算法設(shè)計(jì)主存分配和回收的程序。假設(shè)初始時(shí)主存中沒有作業(yè),現(xiàn)按下面序列進(jìn)行內(nèi)存的申請(qǐng)與釋放:作業(yè)1申請(qǐng)300K,作業(yè)2申請(qǐng)100K,作業(yè)1釋放300K,作業(yè)3申請(qǐng)150K,作業(yè)4申請(qǐng)30K, 作業(yè)5申請(qǐng)40K, 作業(yè)6申請(qǐng)60K, 作業(yè)4釋放30K。四、實(shí)驗(yàn)過程與分析程序代碼如下:#include <std

5、io.h>#include<math.h>#define COUNT 512typedef struct NODEchar name;/名稱float start;/起始位置float end;/大小int flag;/是否分配的標(biāo)志NODE;NODE OSCOUNT;/數(shù)組int count;/被分成的塊數(shù)統(tǒng)計(jì)int applyfree;float numb;char c;/先對(duì)數(shù)組進(jìn)行初始化,使沒有分配的名稱為 Pvoid init()count=1;OS0.name ='P'OS0.start =0;OS0.end =COUNT;OS0.flag =1;

6、/對(duì)數(shù)組的插入操作void insert(int m,float st,float en)int i;count+;for(i=count;i>m+1;i-)OSi=OSi-1;OSm.start =st;OSm.end =en;/移動(dòng)操作,即對(duì)數(shù)組的刪除操作void move(int m)int i;for(i=m;i<count-1;i+)OSi=OSi+1;count-;/如果相鄰塊都沒有分配,則要合并到一起void rremove(int m,float st,float en)if(!OSm-1.flag &&!OSm+1.flag )OS =

7、'P'OSm.flag =1;if(OSm-1.flag )OSm-1.end =OSm-1.end +en;move(m);if(OSm+1.flag )OSm.end =OSm.end +OSm+1.end ;OS ='P'OSm.flag =1;move(m+1);/打印輸出void show()int i;printf("名稱標(biāo)識(shí)起址長(zhǎng)度狀態(tài)n");for(i=0;i<count;i+)if(OSi.flag )printf("P");elseprintf("%c",OSi.n

8、ame );printf("%d%1.0f%1.0f",i,OSi.start ,OSi.end );if(OSi.flag )printf("未分配n");elseprintf("已分配n");/從鍵盤輸入數(shù)據(jù)void putin()printf("請(qǐng)輸入申請(qǐng)或者釋放的進(jìn)程名稱及資源數(shù)量:n");rewind(stdin);scanf("%c",&c);scanf("%d",&applyfree);scanf("%f",&numb

9、);int apply()int i=0;int applyflag=0;int freeflag=0;if(applyfree)/提出申請(qǐng)資源while(!applyflag&&i<count)if(OSi.end >=numb&&OSi.flag )if(OSi.end =numb)OS =c;OSi.flag =0;elseinsert(i+1,OSi.start +numb,OSi.end -numb);OSi+1.flag =1;OSi+1.name ='P'OSi.start =OSi.start ;OSi.n

10、ame =c;OSi.end =numb;OSi.flag =0;applyflag=1;i+;if(applyflag)printf("申請(qǐng)成功!n");return 1;elseprintf("申請(qǐng)失?。]有足夠大的空閑空間。n");return 0;else/提出釋放資源while(!freeflag&&i<count)if(OS =c)if(OSi.end =numb)rremove(i,OSi.start ,OSi.end );elseif(OSi.end >numb)insert(i+1,OSi.sta

11、rt +numb,OSi.end -numb);OSi+1.name ='P'OSi+1.flag =0;OSi.end =numb;OSi.flag =1;if(OSi-1.flag )rremove(i,OSi.start ,OSi.end );elseprintf("釋放失敗,因?yàn)檎褂玫臄?shù)量小于要求釋放的數(shù)量。n");return 0;freeflag=1;i+;if(freeflag)printf("釋放成功!n");return 1;elseprintf("釋放失??!未找到匹配的進(jìn)程名稱。n");retur

12、n 0;void main()init();show();while(1)putin();apply();show();測(cè)試結(jié)果如下圖所示:測(cè)試運(yùn)行如圖所示:1、開始有512K的空間,未分配。用名稱P來表示。進(jìn)程A申請(qǐng)200K的空間,(申請(qǐng)用1表示,釋放用0表示),其結(jié)果顯示如下。2、進(jìn)程B申請(qǐng)150K的空間,3進(jìn)程A釋放200K的空間,4、進(jìn)程C申請(qǐng)100K的空間,進(jìn)程D申請(qǐng)50K的空間5、進(jìn)程E申請(qǐng)30K的空間,進(jìn)程F申請(qǐng)70K的空間五、實(shí)驗(yàn)總結(jié)本次實(shí)驗(yàn)即主存空間分配與回收,通過實(shí)驗(yàn)得出:一個(gè)好的計(jì)算機(jī)系統(tǒng)不僅要有一個(gè)足夠容量的、存取速度高的、穩(wěn)定可靠的主存儲(chǔ)器,而且要能合理地分配和使用這些存儲(chǔ)空間。 當(dāng)用戶提出申請(qǐng)存儲(chǔ)器空間時(shí),存儲(chǔ)管理必須根據(jù)申請(qǐng)者的要求,按一定的策略分析主存空間的使用情況,找出

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論