操作系統(tǒng)動(dòng)態(tài)分區(qū)存儲(chǔ)管理實(shí)驗(yàn)報(bào)告(共9頁)_第1頁
操作系統(tǒng)動(dòng)態(tài)分區(qū)存儲(chǔ)管理實(shí)驗(yàn)報(bào)告(共9頁)_第2頁
操作系統(tǒng)動(dòng)態(tài)分區(qū)存儲(chǔ)管理實(shí)驗(yàn)報(bào)告(共9頁)_第3頁
操作系統(tǒng)動(dòng)態(tài)分區(qū)存儲(chǔ)管理實(shí)驗(yàn)報(bào)告(共9頁)_第4頁
操作系統(tǒng)動(dòng)態(tài)分區(qū)存儲(chǔ)管理實(shí)驗(yàn)報(bào)告(共9頁)_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上【實(shí)驗(yàn)?zāi)康摹磕康模?.熟悉主存的分配與回收。2.理解在不同的存儲(chǔ)管理方式下,如何實(shí)現(xiàn)主存空間的分配與回收。3.掌握動(dòng)態(tài)分區(qū)分配方式中的數(shù)據(jù)結(jié)構(gòu)和分配算法及動(dòng)態(tài)分區(qū)存儲(chǔ)管理方式及其實(shí)現(xiàn)過程。【實(shí)驗(yàn)原理】建立兩張表,空閑表和已分配表,分別將未分配的作業(yè)和已分配好的作業(yè)放入其中。當(dāng)要裝入一個(gè)作業(yè)時(shí),從空閑區(qū)表中查找標(biāo)志為“未分配”的空閑區(qū),從中找出一個(gè)能容納該作業(yè)的空閑區(qū)。如果找到的空閑區(qū)正好等于該作業(yè)的長度,則把該分區(qū)全部分配給作業(yè)。這時(shí)應(yīng)該把該空閑區(qū)登記欄中的標(biāo)志改為“空”,同時(shí)在已分配區(qū)表中找到一個(gè)標(biāo)志為“空”的欄目登記新裝入作業(yè)所占用分區(qū)的起始地址、長度和作業(yè)名。如

2、果找到的空閑區(qū)大于作業(yè)長度,則把空閑區(qū)分成兩部分,一部分用來裝入作業(yè),另外一部分仍為空閑區(qū)。實(shí)驗(yàn)采用的是“最優(yōu)適應(yīng)”算法。最優(yōu)適應(yīng)算法是按作業(yè)要求挑選一個(gè)能滿足作業(yè)要求的最小空閑區(qū),這樣保證可以不去分割一個(gè)大的區(qū)域,使裝入大作業(yè)時(shí)比較容易得到滿足。此實(shí)驗(yàn)為解決假如找到的一個(gè)分區(qū)可能只比作業(yè)所要求的長度略大一點(diǎn)的情況,這時(shí),空閑區(qū)分割后剩下的空閑區(qū)就很小,這種很小的空閑區(qū)往往無法使用,影響了主存的使用。為了一定程度上解決這個(gè)問題,如果空閑區(qū)的大小比作業(yè)要求的長度略大一點(diǎn),不再將空閑區(qū)分成已分分區(qū)和空閑區(qū)兩部分,而是將整個(gè)空閑區(qū)分配給作業(yè)?!緦?shí)驗(yàn)器材和資料】電腦、Microsoft Visual

3、C+ 6.0軟件、操作系統(tǒng)資料書【實(shí)驗(yàn)內(nèi)容和要求】1.主存的分配和回收的實(shí)現(xiàn)是與主存儲(chǔ)器的管理方式有關(guān)的。所謂分配,就是解決多進(jìn)程如何共享主存空間的問題。所謂回收,就是當(dāng)進(jìn)程運(yùn)行完成時(shí)將進(jìn)程所占的主存空間歸還給系統(tǒng)。 2.實(shí)驗(yàn)要求使用可變分區(qū)存儲(chǔ)管理方式,分區(qū)分配中所用的數(shù)據(jù)結(jié)構(gòu)采用空閑分區(qū)說明表和空閑分區(qū)鏈表來進(jìn)行,分區(qū)分配中所用的算法采用首次適應(yīng)算法、循環(huán)首次適應(yīng)算法、最佳適應(yīng)算法三種算法來實(shí)現(xiàn)主存的分配與回收。3.同時(shí),要求設(shè)計(jì)一個(gè)實(shí)用友好的可視化用戶界面,并顯示分配與回收的過程?!緦?shí)驗(yàn)方法與步驟】1.實(shí)驗(yàn)題目:假設(shè)初始狀態(tài)下,可用的內(nèi)存空間為640KB,并有下列的請求序列: (1)進(jìn)程

4、1申請130KB(2)進(jìn)程2申請60K (3)進(jìn)程3申請100KB(4)進(jìn)程2釋放60KB (5)進(jìn)程4申請200KB(6)進(jìn)程3釋放100KB (7)進(jìn)程1釋放130KB(8)進(jìn)程5申請140KB(9)進(jìn)程6申請60KB (10)進(jìn)程7申請50KB(11)進(jìn)程8申請60KB2.實(shí)驗(yàn)方法: (1)設(shè)計(jì)一個(gè)空閑分區(qū)表,空閑分區(qū)表通過空閑分區(qū)鏈表來管理,在進(jìn)行內(nèi)存分配時(shí),系統(tǒng)優(yōu)先使用空閑區(qū)低端的空間。(2)設(shè)計(jì)一個(gè)內(nèi)存分區(qū)表,可用鏈表管理,用以表示當(dāng)前內(nèi)存使用情況。(3)設(shè)計(jì)一個(gè)進(jìn)程申請隊(duì)列以及進(jìn)程完成后的釋放順序,實(shí)現(xiàn)主存的分配和回收。(4)要求每次分配和回收后把空閑分區(qū)的變化情況以及各進(jìn)程的申

5、請、釋放情況以圖形方式顯示、打印出來。3.實(shí)驗(yàn)過程(1)內(nèi)存分配:動(dòng)態(tài)輸入構(gòu)造空閑區(qū)表,并顯打印示構(gòu)造好的空閑分區(qū)表。鍵盤接收內(nèi)存申請。根據(jù)申請,實(shí)施內(nèi)存分配,并返回分配所得內(nèi)存首址。分配完后,調(diào)整空閑分區(qū)表(即扣除分配部分),并顯示調(diào)整后的空閑分區(qū)表。若分配失敗,返回分配失敗信息。(2)內(nèi)存回收:顯示當(dāng)前的空閑分區(qū)表和內(nèi)存分區(qū)表。從鍵盤接收回收分區(qū)的首址與大小,按內(nèi)存回收的四種情況進(jìn)行內(nèi)存回收。 顯示回收后已調(diào)整好的的空閑分區(qū)表。【程序流程圖】輸入內(nèi)存最大范圍執(zhí)行操作添加進(jìn)程并為之分配內(nèi)存回收進(jìn)程并回收被進(jìn)程占用的內(nèi)存判斷是否可以分配退出YES NO發(fā)出內(nèi)存不足的消息【相關(guān)數(shù)據(jù)結(jié)構(gòu)及說明】t

6、ypedef struct None /已分配內(nèi)存分區(qū)鏈表char name100; /進(jìn)程名int begin; /開始地址int end; /結(jié)束地址int length; /長度大小None *next; /指向下一個(gè)內(nèi)存分區(qū)表;typedef struct NeiCun /空閑分區(qū)鏈表int begin1; /空閑分區(qū)首地址int end1; /空閑分區(qū)尾地址int length1; /空閑分區(qū)大小NeiCun *next1; /指向下一個(gè)空閑分區(qū)表;None *head; /內(nèi)存分區(qū)表頭NeiCun *head1; /空閑分區(qū)表頭int MAXNUMBER; /存儲(chǔ)內(nèi)存空間的最大范圍

7、int flag,flog; /標(biāo)志位【程序代碼】 由于我用的是MFC可視化編程編寫,所以在這里不能完全復(fù)制源代碼,只復(fù)制幾個(gè)比較重要的模塊的代碼。1. 初始化鏈表 NeiCun *q;MAXNUMBER=m_Max_Edit;head1 = (NeiCun *)malloc(sizeof(NeiCun);head1->next1=NULL;q=(NeiCun *)malloc(sizeof(NeiCun);q->begin1=1;q->end1=m_Max_Edit;q->length1=m_Max_Edit;q->next1=NULL;head1->ne

8、xt1=q;2. 分配內(nèi)存 None *p1,*p;p1=head;while(p1->next!=NULL)p1=p1->next;p=(None *)malloc(sizeof(None);p->next=NULL;NeiCun *q1,*q2;q1=head1;while(q1->next1!=NULL)if(m_Num_Edit<q1->next1->length1)flag=1;q1->next1->begin1+=m_Num_Edit;q1->next1->length1-=m_Num_Edit;p->begi

9、n=q1->next1->begin1-m_Num_Edit;p->end=p->begin+m_Num_Edit-1;p->length=m_Num_Edit;strcpy(p->name,m_Name1_Edit);p1->next=p; m_ComBo.AddString(p->name);break;else if(m_Num_Edit=q1->next1->length1)flag=1;p->begin=q1->next1->begin1;p->end=q1->next1->end1;p-

10、>length=m_Num_Edit;strcpy(p->name,m_Name1_Edit);p1->next=p;q2=q1->next1;q2->next1=q2->next1; m_ComBo.AddString(p->name);break;elseq1=q1->next1;if(flag=0)AfxMessageBox("內(nèi)存不足!n不好意思",NULL,MB_OK);3. 回收內(nèi)存 int k=0;None *p2,*p3;p2=head;while(p2->next!=NULL)if(!strcmp(p2

11、->next->name,m_Name2_Edit)p3=p2->next;p2->next=p3->next;m_ComBo.DeleteString(k);break;k+;p2=p2->next;NeiCun *q1;q1=head1;while(q1->next1!=NULL)if(q1->next1->begin1-1=p3->end)q1->next1->begin1-=p3->length;q1->next1->length1+=p3->length;break;if(q1->n

12、ext1->begin1-1>p3->end)NeiCun *NewProc;NewProc=(NeiCun *)malloc(sizeof(NeiCun);NewProc->begin1=p3->begin;NewProc->end1=p3->end;NewProc->length1=p3->length;NewProc->next1=q1->next1;q1->next1=NewProc;break;if(q1->next1->end1+1=p3->begin)if(q1->next1->

13、next1=NULL)q1->next1->end1+=p3->length;q1->next1->length1+=p3->length; break;elseif(q1->next1->next1->begin1-1=p3->end)q1->next1->length1+=p3->length;q1->next1->length1+=q1->next1->next1->length1;q1->next1->end1+=p3->length;q1->next1-

14、>end1+=q1->next1->next1->length1;NeiCun *pia;pia=q1->next1->next1;q1->next1->next1=pia->next1; break; elseq1->next1->end1+=p3->length;q1->next1->length1+=p3->length; break;q1=q1->next1;AfxMessageBox("該進(jìn)程已經(jīng)刪除!");4. 描繪內(nèi)存分區(qū)表 HDC hdc;HPEN hp;HBRU

15、SH hbr;hdc=:GetDC(m_hWnd);hp=CreatePen(PS_SOLID,2,RGB(0,0,0);SelectObject(hdc,hp);hbr=CreateSolidBrush(RGB(255,255,255);SelectObject(hdc,hbr);Rectangle(hdc,30,375,480,480); None *pn;pn=head;double x1,y1=375,x2,y2=480; hbr=CreateSolidBrush(RGB(0,0,255);SelectObject(hdc,hbr);while(pn->next!=NULL) x1=(pn->next->begin)/(MAXNUMBER*1.0)*450+30; x2=(pn->next->end)/(MAXNUMBER*1.0)*450+30; Rectangle(hdc,x1,y1,x2,y2); pn=pn->next;DeleteObject(hbr);【執(zhí)行結(jié)果圖示】1. 輸入640KB內(nèi)存總大小,并添加進(jìn)程PM1,申請內(nèi)存為130KB2. 添加進(jìn)程PM2,申請內(nèi)存60KB3添加進(jìn)程PM3,申請內(nèi)存100KB4.回收進(jìn)程PM25.添加進(jìn)程PM4,申請內(nèi)存200以上

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論