動(dòng)態(tài)可變分區(qū)存儲(chǔ)管理模擬系統(tǒng).doc_第1頁
動(dòng)態(tài)可變分區(qū)存儲(chǔ)管理模擬系統(tǒng).doc_第2頁
動(dòng)態(tài)可變分區(qū)存儲(chǔ)管理模擬系統(tǒng).doc_第3頁
動(dòng)態(tài)可變分區(qū)存儲(chǔ)管理模擬系統(tǒng).doc_第4頁
動(dòng)態(tài)可變分區(qū)存儲(chǔ)管理模擬系統(tǒng).doc_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

青 島 農(nóng) 業(yè) 大 學(xué)理學(xué)與信息科學(xué)學(xué)院操 作 系 統(tǒng) 課 程 設(shè) 計(jì) 報(bào) 告 設(shè) 計(jì) 題 目 仿真實(shí)現(xiàn)動(dòng)態(tài)可變分區(qū)存儲(chǔ)管理模擬系統(tǒng) 最佳適應(yīng)算法和最先適應(yīng)算法 學(xué)生專業(yè)班級(jí) 計(jì)算機(jī)科學(xué)與技術(shù)2011級(jí)03班 學(xué)生姓名(學(xué)號(hào)) 張明珠(H20110684 ) 設(shè)計(jì)小組其他同學(xué)姓名(學(xué)號(hào)) 劉玉婷(H20110661) 宋璇(H20110162) 指 導(dǎo) 教 師 牟春蓮 完 成 時(shí) 間 2014. 06.15 實(shí) 習(xí)(設(shè)計(jì))地點(diǎn) 信息樓218 2014年6月16日一、課程設(shè)計(jì)目的操作系統(tǒng)的理論知識(shí)只有通過操作系統(tǒng)的實(shí)際操作和編程才能真正地理解和掌握,沒有實(shí)踐操作系統(tǒng)的操作和編程,學(xué)習(xí)操作系統(tǒng)就是紙上談兵。操作系統(tǒng)課程設(shè)計(jì)是在學(xué)習(xí)完操作系統(tǒng)課程后進(jìn)行的一次全面、綜合實(shí)習(xí),是計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)的重要實(shí)踐性教學(xué)環(huán)節(jié)。通過課程設(shè)計(jì),達(dá)到如下目的:1、鞏固和加深對(duì)操作系統(tǒng)原理的理解,提高綜合運(yùn)用本課程所學(xué)知識(shí)的能力。2、培養(yǎng)學(xué)生選用參考書,查閱手冊(cè)及文獻(xiàn)資料的能力;培養(yǎng)獨(dú)立思考、深入研究、分析問題、解決問題的能力。3、通過實(shí)際操作系統(tǒng)的分析設(shè)計(jì)、編程調(diào)試,掌握系統(tǒng)軟件的分析方法和工程設(shè)計(jì)方法。4、能夠按要求編寫課程設(shè)計(jì)報(bào)告書,能正確闡述設(shè)計(jì)過程和實(shí)驗(yàn)結(jié)果、正確繪制系統(tǒng)和程序框圖。5、通過課程設(shè)計(jì),培養(yǎng)學(xué)生嚴(yán)謹(jǐn)?shù)目茖W(xué)態(tài)度、嚴(yán)肅認(rèn)真的工作作風(fēng)和團(tuán)隊(duì)協(xié)作精神。二、設(shè)計(jì)任務(wù)題目描述:仿真實(shí)現(xiàn)動(dòng)態(tài)可變分區(qū)存儲(chǔ)管理模擬系統(tǒng)。內(nèi)存調(diào)度策略可采用最先適應(yīng)算法、最佳適應(yīng)法等,并對(duì)各種算法進(jìn)行性能比較。為了實(shí)現(xiàn)分區(qū)分配,系統(tǒng)中必須配置相應(yīng)的數(shù)據(jù)結(jié)構(gòu),用來描述空閑區(qū)和已分配區(qū)的情況,為分配提供依據(jù)。常用的數(shù)據(jù)結(jié)構(gòu)有兩種形式:空閑分區(qū)表和空閑分區(qū)鏈。為把一個(gè)新作業(yè)裝入內(nèi)存,須按照一定的算法,從空閑分區(qū)表或空閑分區(qū)鏈中選出一個(gè)分區(qū)分配給該作業(yè).設(shè)計(jì)要求:1采用指定算法模擬動(dòng)態(tài)分區(qū)管理方式的主存分配。能夠處理以下的情形: 隨機(jī)出現(xiàn)的進(jìn)程i申請(qǐng)jKB內(nèi)存,程序能判斷是否能分配,如果能分配,要求輸出分配的首地址Faddress,并要求輸出內(nèi)存使用情況和空閑情況。內(nèi)存情況輸出的格式為:Faddress該分區(qū)的首地址;Eaddress該分區(qū)的尾地址Len 分區(qū)長度;Process 如果使用,使用的進(jìn)程號(hào),否則為0。 主存分配函數(shù)實(shí)現(xiàn)尋找空閑區(qū)、空閑區(qū)表的修改、已分配區(qū)表的修改功能。成員分工:張明珠 申請(qǐng)內(nèi)存、查看進(jìn)程之間的前后的區(qū)域狀態(tài)、釋放進(jìn)程劉玉婷 最先適應(yīng)算法、將其釋放的內(nèi)存插入空閑塊中、初始化宋璇 最佳適應(yīng)算法、將新項(xiàng)插入已分配表中、退出張明珠 宋璇 劉玉婷 整個(gè)界面的優(yōu)化 、界面設(shè)計(jì)、總體思路三、分析與設(shè)計(jì)1設(shè)計(jì)思路存儲(chǔ)器是計(jì)算機(jī)的重要組成部分,存儲(chǔ)空間是操作系統(tǒng)管理的寶貴資源,雖然其容量在不斷擴(kuò)大,但仍然遠(yuǎn)遠(yuǎn)不能滿足軟件發(fā)展的需要。對(duì)存儲(chǔ)資源進(jìn)行有效的管理,不僅關(guān)系到存儲(chǔ)器的利用率,而且還對(duì)操作系統(tǒng)的性能和效率有很大的影響。操作系統(tǒng)的存儲(chǔ)管理的基本功能有:存儲(chǔ)分配、地址轉(zhuǎn)換和存儲(chǔ)保護(hù)、存儲(chǔ)共享、存儲(chǔ)擴(kuò)充。存儲(chǔ)分配指為選中的多道運(yùn)行的作業(yè)分配主存空間;地址轉(zhuǎn)換是把邏輯地址空間中的用戶程序通過靜態(tài)重定位或動(dòng)態(tài)重定位轉(zhuǎn)換和映射到分給的物理地址空間中,以便用戶程序的執(zhí)行;存儲(chǔ)保護(hù)指各道程序只能訪問自己的存儲(chǔ)區(qū)域,而不能互相干擾,以免其他程序受到有意或無意的破壞;存儲(chǔ)共享指主存中的某些程序和數(shù)據(jù)可供不同用戶進(jìn)程共享。最簡單的單道系統(tǒng)中,一旦一個(gè)程序能裝入主存,它將一直運(yùn)行直到結(jié)束。如果程序長度超出了主存的實(shí)際容量,可以通過覆蓋和交換的技術(shù)獲得解決。更多的操作系統(tǒng)支持多個(gè)用戶進(jìn)程在主存同時(shí)執(zhí)行,能滿足多道程序設(shè)計(jì)需要的最簡單的存儲(chǔ)管理技術(shù)是分區(qū)方式,有分固定分區(qū)和可變分區(qū)??勺兎謪^(qū)的分配(如圖(1)所示)算法包括:最先適應(yīng)、下次適應(yīng)、最佳適應(yīng)、最壞適應(yīng)和快速適應(yīng)等分配算法。圖(1)動(dòng)態(tài)內(nèi)存分配采用分區(qū)方式管理存儲(chǔ)器,每道程序總是要求占用主存的一個(gè)或幾個(gè)連續(xù)的存儲(chǔ)區(qū)域,主存中會(huì)產(chǎn)生許多碎片。因此,有時(shí)為了接納一個(gè)新的作業(yè)而往往要移動(dòng)已在主存的信息,這不僅不方便,而且開銷不小?,F(xiàn)代計(jì)算機(jī)都有某種虛存硬設(shè)備支持,簡單也是常用的虛存是請(qǐng)求分頁式虛存管理,于是允許把一個(gè)進(jìn)程的頁面存放到若干不相鄰的主存頁框中。 從搜索速度上看,最先適應(yīng)算法具有最佳性能。從回收過程來看,最先適應(yīng)法也是最佳的。最先適應(yīng)算法要求可用表或自由鏈接按起始地址遞增的次序排列。該算法的最大特點(diǎn)是一旦找到大于或等于所要求內(nèi)存的長度的分區(qū),則搜索結(jié)束。其優(yōu)點(diǎn):(1)、在釋放內(nèi)存分區(qū)時(shí),如果有相鄰的空白區(qū)就進(jìn)行合并,使其成為一個(gè)較大的空白區(qū);(2)、本算法的實(shí)質(zhì)是盡可能的利用存儲(chǔ)器的低地址部分,在高地址部分則保留較多的或較大的空白區(qū),以后如果需要較大的空白區(qū),就容易能夠滿足。最佳適應(yīng)算法:從全部空閑區(qū)中找出能滿足作業(yè)要求的、且大小最小的空閑分區(qū),這種方法能使碎片盡量小。為適應(yīng)此算法,空閑分區(qū)表(空閑區(qū)鏈)中的空閑分區(qū)要按從小到大進(jìn)行排序,自表頭開始查找到第一個(gè)滿足要求的自由分區(qū)分配。該算法保留大的空閑區(qū),但造成許多小的空閑區(qū)。最佳適應(yīng)算法將可利用空間表中一個(gè)大小不小于“請(qǐng)求”且最接近“請(qǐng)求”的空閑塊的一部分分配給用戶。分配與回收都需要對(duì)可利用空間表從頭至尾查詢一遍。為了避免每次分配都要查詢整個(gè)鏈表,通常要求節(jié)點(diǎn)從大到小排序,由此只需找到第一個(gè)足夠大的空閑塊即可予以分配。但回收時(shí),必須把回收的空閑塊放置在符合大小順序關(guān)系的鏈表位置。在分配時(shí)容易產(chǎn)生太小而無法利用的內(nèi)存碎片,同時(shí)這種做法也保留了那些很大的內(nèi)存塊以備響應(yīng)將來發(fā)生的內(nèi)存量較大的用戶“請(qǐng)求”,從而使整個(gè)鏈表逐漸趨向于節(jié)點(diǎn)大小差別甚遠(yuǎn)的狀態(tài)。這種分配算法適合請(qǐng)求分配內(nèi)存大小范圍較廣的系統(tǒng),此算法比較費(fèi)時(shí)間。在進(jìn)行內(nèi)存分配時(shí),從空閑分區(qū)表(或空閑分區(qū)鏈)首開始順序查找,直到找到第一個(gè)能滿足其大小要求的空閑分區(qū)為止。如果該空閑分區(qū)大于作業(yè)的大小,則從該分區(qū)中劃出一塊內(nèi)存空間分配給請(qǐng)求者,將剩余空閑區(qū)仍然留在空閑分區(qū)表(或空閑分區(qū)鏈)中。最佳適應(yīng)算法的特點(diǎn):按最佳適應(yīng)算法為作業(yè)分配內(nèi)存,就能把既滿足作業(yè)要求又與作業(yè)大小最接近的空閑分區(qū)分配給作業(yè)。保留了大的空閑區(qū),但分割后的剩余空閑區(qū)很小。本課程設(shè)計(jì)就是分析動(dòng)態(tài)分區(qū)法,與固定分區(qū)法相比,動(dòng)態(tài)分區(qū)法在作業(yè)執(zhí)行前并不建立分區(qū),分區(qū)的建立是在作業(yè)的處理過程中進(jìn)行的。且其大小可隨作業(yè)或進(jìn)程對(duì)內(nèi)存的要求而改變分區(qū)的建立是在作業(yè)的處理過程中進(jìn)行的。且其大小可隨作業(yè)或進(jìn)程對(duì)內(nèi)存的要求而改變。這就改變了固定分區(qū)法中那種即使是小作業(yè)也要占據(jù)大分區(qū)的浪費(fèi)現(xiàn)象,從而提高了內(nèi)存的利用率。2. 概要設(shè)計(jì) 動(dòng)態(tài)分區(qū)分配是根據(jù)進(jìn)程的實(shí)際需要,動(dòng)態(tài)地為之分配內(nèi)存空間。在實(shí)現(xiàn)可變分區(qū)分配時(shí),將涉及到分區(qū)分配中所用的數(shù)據(jù)結(jié)構(gòu)、分區(qū)分配算法和分區(qū)的分配和回收操作這樣三個(gè)問題。為了實(shí)現(xiàn)分區(qū)分配,系統(tǒng)中必須配置相應(yīng)的數(shù)據(jù)結(jié)構(gòu),用來描述空閑區(qū)和已分配區(qū)的情況,為分配提供依據(jù)。常用的數(shù)據(jù)結(jié)構(gòu)有兩種形式:空閑分區(qū)表和空閑分區(qū)鏈。為把一個(gè)新作業(yè)裝入內(nèi)存,須按照一定的算法,從空閑分區(qū)表或空閑分區(qū)鏈中選出一個(gè)分區(qū)分配給該作業(yè)。目前常用的分配算法有:首次適應(yīng)算法、循環(huán)首次適應(yīng)算法、最佳適應(yīng)算法、最壞適應(yīng)算法和快速適應(yīng)算法。在動(dòng)態(tài)分區(qū)存儲(chǔ)管理方式中,主要操作是分配內(nèi)存和回收.系統(tǒng)模塊劃分:動(dòng)態(tài)可變分區(qū)存儲(chǔ)管理模擬系統(tǒng)退出查看內(nèi)存狀態(tài)查看已分配區(qū)查看空閑區(qū)釋放內(nèi)存申請(qǐng)內(nèi)存初始化內(nèi)存最佳適應(yīng)算法最先適應(yīng)算法 圖(2)各模塊劃分圖主流程圖:開始初始內(nèi)存,開始分配內(nèi)存switch 釋放內(nèi)存最先適應(yīng)算法查看內(nèi)存分配狀態(tài)最佳適應(yīng)算法 圖(3)主流程圖各程序模塊的調(diào)用層次:分配內(nèi)存 查看內(nèi)存分配狀態(tài) 釋放內(nèi)存空閑區(qū)最先適應(yīng)算法最佳適應(yīng)算法已分區(qū) 圖(4)各程序調(diào)用圖3詳細(xì)設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)結(jié)構(gòu)體定義進(jìn)程struct areaint start;int end;int len;int sign;struct area * next;5個(gè)數(shù)據(jù)成員,分別為: start(分區(qū)的首地址)、end、(分區(qū)尾地址)len(分區(qū)的長度)、sign(標(biāo)志進(jìn)程狀態(tài))、next(指針用來指向下一個(gè)進(jìn)程)。內(nèi)存分配表的圖類似與圖(5)所示:區(qū)號(hào)分區(qū)長度起始地址118K40K525K80K79K100K96K120K圖(5)內(nèi)存分配圖最先適應(yīng)算法流程如下圖所示 請(qǐng)求SIZE大小的分區(qū):從空閑區(qū)表順序查找是否查完表無法分配該空閑去長度是否SIZE取下一表項(xiàng)否該空閑區(qū)長度=SIZE否從可用表中移去該表項(xiàng),調(diào)整可用表是從空閑區(qū)中取所需大小,修改可用表返回分配起始地址 圖(6)最先適應(yīng)算法流程圖 最佳適應(yīng)算法流程如下圖所示:從空閑區(qū)表中順序查找 p=av,p=av p.lennext否是p.lenX 是否將p指向的分區(qū)分割,前面p.len-X大小的作為自由分區(qū),修改長度信息,將之摘除。將后面X大小的分區(qū)進(jìn)行分配直接分配p所指全部空間,并摘除自由鏈表中p所指分區(qū)將p所指分區(qū)按長度升序重新插入自由鏈表中 結(jié)束圖(7)最佳適應(yīng)算法流程圖4、 系統(tǒng)實(shí)施在模擬過程中,沒有充分理解操作系統(tǒng)教程上關(guān)于動(dòng)態(tài)分區(qū)法、最先適應(yīng)法、最優(yōu)適應(yīng)法的概念,造成了對(duì)設(shè)計(jì)的目的設(shè)計(jì)不清楚,不能很好地表達(dá)出此設(shè)計(jì)的功能尋找空白區(qū)方法的不同:分區(qū)分配是對(duì)可用表(或自由鏈)數(shù)據(jù)結(jié)構(gòu)進(jìn)行操作,空閑區(qū)表可以按空閑區(qū)大小的升序(降序)和空閑區(qū)首址升序(降序)兩種方法進(jìn)行組織。才開始并沒有理解這兩種分配方式對(duì)這最佳適應(yīng)算法和最先適應(yīng)算法的影響,導(dǎo)致混淆,出現(xiàn)了錯(cuò)誤。 對(duì)題目理解有誤,對(duì)模塊之間的關(guān)系設(shè)計(jì)不是很清晰。 圖(8)初始化圖 圖(9) 申請(qǐng)內(nèi)存圖 圖(10)查看已分配區(qū)圖 圖(11)查看空閑區(qū)圖 圖(12)釋放內(nèi)存圖 圖(13)查看內(nèi)存狀態(tài)圖最佳算法和最先算法的比較: 圖(13)兩算法的對(duì)比圖 五、程序清單#includeusing namespace std;#includestruct areaint start; 定義分區(qū)的首地址int end;定義分區(qū)的尾地址int len;定義分區(qū)的長度int sign;定義分區(qū)的進(jìn)程號(hào)struct area * next;定義進(jìn)程的指針; struct area*freehead=NULL;聲明 freehead 是型結(jié)構(gòu)指針。 初始freehead指針為空。 struct area*usedhead=NULL;聲明 usedhead 是型結(jié)構(gòu)指針。初始usedhead指針為空。void create();創(chuàng)建內(nèi)存區(qū)void print(area*);void ask(area*);void ask1(area*);void correct(area*,int);area * delempty();初始化void inserused(area *,int ,int );void inserfree(area * );void setfree();void listID();/最先適應(yīng)法void listlen();/最優(yōu)適應(yīng)法void swap(area *,area *);/初始化area * delempty() area * p1=freehead;把空閑區(qū)首地址賦值給p1 if(p1-len=0) if(p1-next=NULL)return NULL; else p1=p1-next;指向下一個(gè)地址 /最優(yōu)適應(yīng)法void listlen()int n=0; 初始為零area *p9=freehead-next,*p0=freehead,*p11,*p12,*p13;while(p0!=NULL)不為空p0=p0-next;指向下一個(gè)地址n+;n加一p0=freehead;把空閑區(qū)賦值給p0if (n=1)return;else while(p9!=NULL)p12=p0; 把p0空閑區(qū)給p12p13=p9;把p9空閑區(qū)給p13p0=p0-next; p0指向下一個(gè)地址p9=p9-next; while(p13!=NULL)/把空閑區(qū)按從小到大的順序排列 if(p12-len)(p13-len)如果p12長度p13長度p11=new area;/把p13給p11p11-end=p13-end;p11-len=p13-len;p11-sign=p13-sign;p11-start=p13-start;p11-next=NULL;swap(p13,p12);交換兩個(gè)P13,P12swap(p12,p11);交換兩個(gè)P12,P11 p13=p13-next;void swap(area *p13,area *p14)p13-len=p14-len;p13-sign=p14-sign;p13-end=p14-end;p13-start=p14-start;/最先適應(yīng)法void listID()int n=0;area *p9=freehead-next,*p0=freehead,*p11,*p12,*p13;while(p0!=NULL)p0=p0-next;n+;p0=freehead;if (n=1)return;else while(p9!=NULL)p12=p0;p13=p9;p0=p0-next; p9=p9-next; while(p13!=NULL)/把地址按遞增順序排列 if(p12-start)(p13-start)p11=new area;p11-end=p13-end;p11-len=p13-len;p11-sign=p13-sign;p11-start=p13-start;p11-next=NULL;swap(p13,p12);swap(p12,p11); p13=p13-next;void inserfree(area * p3)查看進(jìn)程之間的前后的區(qū)域狀態(tài)int flag=0;area *pf=freehead,*pe=freehead,*pe1; while(pf!=NULL)if(pf-end!=p3-start)/判斷是否有前繼空閑塊pf=pf-next; else break; if(pf!=NULL)flag=5;/flag=5 有前置空閑塊else flag=1;/沒有置1 while(pe!=NULL)/判斷是否有后繼空閑塊if(pe-start!=p3-end)pe1=pe; pe=pe-next;else break; if(pe!=NULL) if(flag=5) flag=6; else flag=4; /有前置且有后置FLAG=6,只有后置=4 else if(flag=1) flag=2; /前后都沒有置2 switch(flag) case 5:pf-end=pf-end+p3-len;前置空閑塊 pf-len=pf-len+p3-len; break; case 4:pe-start=pe-start-p3-len;只有后置 pe-len=pe-len+p3-len; break; case 2: area* p8; p8=new area; p8-start=p3-start; p8-len=p3-len; p8-sign=0; p8-end=p3-end; p8-next=freehead; freehead=p8; break; case 6:pf-end=pe-end;有前置與后置 pf-len=pf-len+pe-len+p3-len; if(pe-next=NULL) pe1-next=NULL; delete pe; else if(pe=freehead)freehead=pe-next;delete pe;else pe1-next=pe-next;delete pe; break; default :break; void setfree() 釋放進(jìn)程int chose;coutchose; area*p7=usedhead,*p2;while( p7!=NULL) /尋找有無此進(jìn)程if( p7-sign!=chose )p2=p7;p7=p7-next;else break;if(p7=NULL)cout沒有此進(jìn)程,釋放內(nèi)存失敗,返回修改!next=NULL) usedhead=NULL; elseif(p7-next=NULL)p2-next=NULL;delete p7;/將次進(jìn)程從已分配表中刪除else if(p7=usedhead)usedhead=p7-next;delete p7;else p2-next=p7-next;delete p7; cout成功釋放所選任務(wù)的內(nèi)存!當(dāng)前內(nèi)存狀況為:endl;print(freehead);print(usedhead);coutstart=p3-start;p5-len=need; p5-sign=num;p5-end=p3-start+need;p5-next=NULL;usedhead=p5;elsep5=new area;p5-start=p3-start;p5-len=need; p5-sign=num;p5-end=p3-start+need;p5-next=usedhead;usedhead=p5;void correct(area*p3,int need1)修改列表p3-len=p3-len-need1;p3-start=p3-start+need1;void create() 創(chuàng)建地址長度area* p1;p1=new area;p1-start=0;p1-end=999;p1-len=999;p1-sign=0;p1-next=NULL;freehead= p1;void ask1(area*freehead)/讀文件初始化,只用一次int num,need; area*p3=freehead;ifstream infile(123.TXT);while(infilenum) infileneed; if(p3-lenneed) cout內(nèi)存不足,分配失??!endl; return; else inserused(p3,num,need);correct(p3,need);void ask(area*freehead)申請(qǐng)內(nèi)存int num,need; area*p3=freehead,*p31=freehead;coutinput num and need! num;cinneed;while( p3!=NULL)if(p3-lennext;else break; if(p3=NULL)cout內(nèi)存不足,分配失?。ndl;return;inserused(p3,num,need);correct(p3,need); freehead=delempty();cout成功分配申請(qǐng),當(dāng)前內(nèi)存狀況為:endl;print(freehead);print(usedhead);coutendl;void print(area*pp)顯示頁面area*p;p=pp;coutn;if(p=NULL)coutempty list!endl; coutn;return;elsedocoutstart:start end:end len:len sign:signnext;while(p!=NULL);coutn;int main() int yourchose,flag1=0,flag2=0; int what; cout現(xiàn)在初始化內(nèi)存n; coutflag2; create(); if(flag2=2)ask1(freehead); cout內(nèi)存初始狀態(tài)為:n; print(freehead);print(usedhead);coutendl; cout-菜單選項(xiàng)-n;cout1.申請(qǐng)內(nèi)存 2.釋放作業(yè)的內(nèi)存n;cout3.查看空閑塊鏈 4.查看已分配塊鏈n;cout5.查看內(nèi)存狀態(tài) 0.退出n;cout-endl;while(flag1=0) coutyourchose; switch(yourchose) case 1: coutwhat;if(what=1)listID();else listlen(); ask(freehead);break; case 2:setfree();.釋放作業(yè)的內(nèi)存break; case 3:print(freehead);查看空閑塊鏈break; case 4:print(usedhead);查看已分配塊鏈break;case 5: print(freehead);查看內(nèi)存狀態(tài) print(usedhead);break;case 0:flag1=1;退出break;default: break; return 0;6、 總結(jié)與體會(huì) 在一開始老師布置這次的實(shí)驗(yàn)題目時(shí),自己根本不知道要干什么,因?yàn)樵谏险n時(shí)對(duì)動(dòng)態(tài)分區(qū)分配這節(jié)內(nèi)容不是太了解,所以在上機(jī)時(shí)不知道如何下手,后來,將本章內(nèi)容反復(fù)的看了幾遍之后,終于有了自己的思路。在模擬過程中,要充分理解操作系統(tǒng)上關(guān)于:1、動(dòng)態(tài)分區(qū)法:動(dòng)態(tài)分區(qū)法在作業(yè)執(zhí)行前并不建立分區(qū),分區(qū)的建立是在作業(yè)的處理過程中進(jìn)行的。且其大小可隨作業(yè)或進(jìn)程對(duì)內(nèi)存的要求而改變分區(qū)的建立是在作業(yè)的處理過程中進(jìn)行的。且其大小可隨作業(yè)或進(jìn)程對(duì)內(nèi)存的要求而改變。這就改變了固定分區(qū)法中那種即使是小作業(yè)也要占據(jù)大分區(qū)的浪費(fèi)現(xiàn)象,從而提高了內(nèi)存的利用率。2、最先適應(yīng)法:最先適應(yīng)算法要求可用表或自由鏈接按起始地址遞增的次序排列。該算法的最大特點(diǎn)是一旦找到大于或等于所要求內(nèi)存的長度的分區(qū),則搜索結(jié)束。其優(yōu)點(diǎn):(1)、在釋放內(nèi)存分區(qū)時(shí),如果有相鄰的空白區(qū)就進(jìn)行合并,使其成為一個(gè)較大的空白區(qū);(2)、本算法的實(shí)質(zhì)是盡可能的利用存儲(chǔ)器的低地址部分,

溫馨提示

  • 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)論