




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、青 島 農(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í)只有通過(guò)操作系統(tǒng)的實(shí)際操作和編程才能真正地理解和掌握,沒(méi)有實(shí)踐操作系統(tǒng)的操作和編程,學(xué)習(xí)操作系統(tǒng)就是
2、紙上談兵。操作系統(tǒng)課程設(shè)計(jì)是在學(xué)習(xí)完操作系統(tǒng)課程后進(jìn)行的一次全面、綜合實(shí)習(xí),是計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)的重要實(shí)踐性教學(xué)環(huán)節(jié)。通過(guò)課程設(shè)計(jì),達(dá)到如下目的:1、鞏固和加深對(duì)操作系統(tǒng)原理的理解,提高綜合運(yùn)用本課程所學(xué)知識(shí)的能力。2、培養(yǎng)學(xué)生選用參考書,查閱手冊(cè)及文獻(xiàn)資料的能力;培養(yǎng)獨(dú)立思考、深入研究、分析問(wèn)題、解決問(wèn)題的能力。3、通過(guò)實(shí)際操作系統(tǒng)的分析設(shè)計(jì)、編程調(diào)試,掌握系統(tǒng)軟件的分析方法和工程設(shè)計(jì)方法。4、能夠按要求編寫課程設(shè)計(jì)報(bào)告書,能正確闡述設(shè)計(jì)過(guò)程和實(shí)驗(yàn)結(jié)果、正確繪制系統(tǒng)和程序框圖。5、通過(guò)課程設(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)可變
3、分區(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),用來(lái)描述空閑區(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ū)的首地
4、址;Eaddress該分區(qū)的尾地址Len 分區(qū)長(zhǎng)度;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ì)
5、操作系統(tǒng)的性能和效率有很大的影響。操作系統(tǒng)的存儲(chǔ)管理的基本功能有:存儲(chǔ)分配、地址轉(zhuǎn)換和存儲(chǔ)保護(hù)、存儲(chǔ)共享、存儲(chǔ)擴(kuò)充。存儲(chǔ)分配指為選中的多道運(yùn)行的作業(yè)分配主存空間;地址轉(zhuǎn)換是把邏輯地址空間中的用戶程序通過(guò)靜態(tài)重定位或動(dòng)態(tài)重定位轉(zhuǎn)換和映射到分給的物理地址空間中,以便用戶程序的執(zhí)行;存儲(chǔ)保護(hù)指各道程序只能訪問(wèn)自己的存儲(chǔ)區(qū)域,而不能互相干擾,以免其他程序受到有意或無(wú)意的破壞;存儲(chǔ)共享指主存中的某些程序和數(shù)據(jù)可供不同用戶進(jìn)程共享。最簡(jiǎn)單的單道系統(tǒng)中,一旦一個(gè)程序能裝入主存,它將一直運(yùn)行直到結(jié)束。如果程序長(zhǎng)度超出了主存的實(shí)際容量,可以通過(guò)覆蓋和交換的技術(shù)獲得解決。更多的操作系統(tǒng)支持多個(gè)用戶進(jìn)程在主存同時(shí)執(zhí)
6、行,能滿足多道程序設(shè)計(jì)需要的最簡(jiǎn)單的存儲(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)已在主存的信息,這不僅不方便,而且開(kāi)銷不小?,F(xiàn)代計(jì)算機(jī)都有某種虛存硬設(shè)備支持,簡(jiǎn)單也是常用的虛存是請(qǐng)求分頁(yè)式虛存管理,于是允許把一個(gè)進(jìn)程的頁(yè)面存放到若干不相鄰的主存頁(yè)框中。 從搜索速度上看,最先適應(yīng)算法具有最佳性能。從回收過(guò)程來(lái)看,最先適應(yīng)法也是最佳的。
7、最先適應(yīng)算法要求可用表或自由鏈接按起始地址遞增的次序排列。該算法的最大特點(diǎn)是一旦找到大于或等于所要求內(nèi)存的長(zhǎng)度的分區(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)行排序,自表頭開(kāi)始查找到第一個(gè)滿足要求的自由分區(qū)分配。該算法保留大的空閑區(qū),但造成許多
8、小的空閑區(qū)。最佳適應(yīng)算法將可利用空間表中一個(gè)大小不小于“請(qǐng)求”且最接近“請(qǐng)求”的空閑塊的一部分分配給用戶。分配與回收都需要對(duì)可利用空間表從頭至尾查詢一遍。為了避免每次分配都要查詢整個(gè)鏈表,通常要求節(jié)點(diǎn)從大到小排序,由此只需找到第一個(gè)足夠大的空閑塊即可予以分配。但回收時(shí),必須把回收的空閑塊放置在符合大小順序關(guān)系的鏈表位置。在分配時(shí)容易產(chǎn)生太小而無(wú)法利用的內(nèi)存碎片,同時(shí)這種做法也保留了那些很大的內(nèi)存塊以備響應(yīng)將來(lái)發(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ū)
9、鏈)首開(kāi)始順序查找,直到找到第一個(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è)的處理過(guò)程中進(jìn)行的。且其大小可隨作業(yè)或進(jìn)程對(duì)內(nèi)存的要求而改變分區(qū)的建立是在作業(yè)的處理過(guò)程中進(jìn)行的。且其大小可隨作業(yè)或進(jìn)程對(duì)內(nèi)存的要求而改變。這就改變了固定分
10、區(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è)問(wèn)題。為了實(shí)現(xiàn)分區(qū)分配,系統(tǒng)中必須配置相應(yīng)的數(shù)據(jù)結(jié)構(gòu),用來(lái)描述空閑區(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ǔ)
11、管理方式中,主要操作是分配內(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)各模塊劃分圖主流程圖:開(kāi)始初始內(nèi)存,開(kā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ù)成員,
12、分別為: start(分區(qū)的首地址)、end、(分區(qū)尾地址)len(分區(qū)的長(zhǎng)度)、sign(標(biāo)志進(jìn)程狀態(tài))、next(指針用來(lái)指向下一個(gè)進(jìn)程)。內(nèi)存分配表的圖類似與圖(5)所示:區(qū)號(hào)分區(qū)長(zhǎng)度起始地址118K40K525K80K79K100K96K120K圖(5)內(nèi)存分配圖最先適應(yīng)算法流程如下圖所示 請(qǐng)求SIZE大小的分區(qū):從空閑區(qū)表順序查找是否查完表無(wú)法分配該空閑去長(zhǎng)度是否SIZE取下一表項(xiàng)否該空閑區(qū)長(zhǎng)度=SIZE否從可用表中移去該表項(xiàng),調(diào)整可用表是從空閑區(qū)中取所需大小,修改可用表返回分配起始地址 圖(6)最先適應(yīng)算法流程圖 最佳適應(yīng)算法流程如下圖所示:從空閑區(qū)表中順序查找 p=av
13、;,p= av p.len<X q=p, p=p->next 否是p.lenX> 是否將p指向的分區(qū)分割,前面p.len-X大小的作為自由分區(qū),修改長(zhǎng)度信息,將之摘除。將后面X大小的分區(qū)進(jìn)行分配直接分配p所指全部空間,并摘除自由鏈表中p所指分區(qū)將p所指分區(qū)按長(zhǎng)度升序重新插入自由鏈表中 結(jié)束圖(7)最佳適應(yīng)算法流程圖4、 系統(tǒng)實(shí)施在模擬過(guò)程中,沒(méi)有充分理解操作系統(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ū)表
14、可以按空閑區(qū)大小的升序(降序)和空閑區(qū)首址升序(降序)兩種方法進(jìn)行組織。才開(kāi)始并沒(méi)有理解這兩種分配方式對(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ì)比圖 五、程序清單#include<iostream>using namespace std;#include<fstream>struct areaint start; 定義分
15、區(qū)的首地址int end;定義分區(qū)的尾地址int len;定義分區(qū)的長(zhǎng)度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);are
16、a * 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 l
17、istlen()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
18、)>(p13->len)如果p12長(zhǎng)度>p13長(zhǎng)度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;p1
19、3->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)
20、/把地址按遞增順序排列 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=f
21、reehead,*pe1; while(pf!=NULL)if(pf->end!=p3->start)/判斷是否有前繼空閑塊pf=pf->next; else break; if(pf!=NULL)flag=5;/flag=5 有前置空閑塊else flag=1;/沒(méi)有置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,只有后置
22、=4 else if(flag=1) flag=2; /前后都沒(méi)有置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-&g
23、t;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;
24、delete pe; break; default :break; void setfree() 釋放進(jìn)程int chose;cout<<"選擇一個(gè)要釋放的任務(wù) :" cin>>chose; area*p7=usedhead,*p2;while( p7!=NULL) /尋找有無(wú)此進(jìn)程if( p7->sign!=chose )p2=p7;p7=p7->next;else break;if(p7=NULL)cout<<"沒(méi)有此進(jìn)程,釋放內(nèi)存失敗,返回修改!"<<endl;return;inserfr
25、ee(p7);/將其釋放的內(nèi)存插入空閑塊中 if(p7=usedhead &&p7->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(fr
26、eehead);print(usedhead);cout<<endl;void inserused(area *p3,int num,int need)/將新項(xiàng)插入已分配表中area*p5;if(usedhead=NULL)p5=new area;p5->start=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=
27、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)建地址長(zhǎng)度area* p1;p1=new area;p1->start=0;p1->end=999;p1->len=999;p1->sign=0;p1->next=NULL;free
28、head= p1;void ask1(area*freehead)/讀文件初始化,只用一次int num,need; area*p3=freehead;ifstream infile("123.TXT");while(infile>>num) infile>>need; if(p3->len<need) cout<<"內(nèi)存不足,分配失??!"<<endl; return; else inserused(p3,num,need);correct(p3,need);void ask(area*free
29、head)申請(qǐng)內(nèi)存int num,need; area*p3=freehead,*p31=freehead;cout<<"input num and need! "<<endl;cin>>num;cin>>need;while( p3!=NULL)if(p3->len<need)p31=p3;p3=p3->next;else break; if(p3=NULL)cout<<"內(nèi)存不足,分配失??!"<<endl;return;inserused(p3,num,need
30、);correct(p3,need); freehead=delempty();cout<<"成功分配申請(qǐng),當(dāng)前內(nèi)存狀況為:"<<endl;print(freehead);print(usedhead);cout<<endl;void print(area*pp)顯示頁(yè)面area*p;p=pp;cout<<"n"if(p=NULL)cout<<"empty list!"<<endl; cout<<"n"return;elsedoco
31、ut<<"start:"<<p->start<<" end:"<<p->end<<" len:"<<p->len<<" sign:"<<p->sign<<endl; p=p->next;while(p!=NULL);cout<<"n"int main() int yourchose,flag1=0,flag2=0; int what; cout&l
32、t;<">>>>現(xiàn)在初始化內(nèi)存>>>>>>>n" cout<<"請(qǐng)選擇:1.手動(dòng)初始化 2.讀取文件初始化 :" cin>>flag2; create(); if(flag2=2)ask1(freehead); cout<<"內(nèi)存初始狀態(tài)為:n" print(freehead);print(usedhead);cout<<endl; cout<<"-菜單選項(xiàng)-n"cout<<
33、;"1.申請(qǐng)內(nèi)存 2.釋放作業(yè)的內(nèi)存n"cout<<"3.查看空閑塊鏈 4.查看已分配塊鏈n"cout<<"5.查看內(nèi)存狀態(tài) 0.退出n"cout<<"-"<<endl;while(flag1=0) cout<<"-請(qǐng)選擇操作- :" cin>>yourchose; switch(yourchose) case 1: cout<<"選擇哪種方式?1.最先適應(yīng) 2.最優(yōu)適應(yīng): " cin>
34、>what;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ì) 在一開(kāi)始老師布置這次的實(shí)驗(yàn)題目時(shí),自己根本不知道要干什么,因?yàn)樵谏险n時(shí)對(duì)動(dòng)態(tài)分區(qū)分配這節(jié)內(nèi)容不是太了解,所以在上機(jī)時(shí)不知道如何下手,后來(lái),將本章內(nèi)容反復(fù)的看了幾遍之后,終于有了自己的思路。在模擬過(guò)程中,要充分理解操作系統(tǒng)上關(guān)于:1、動(dòng)態(tài)分區(qū)法:動(dòng)態(tài)分區(qū)法在作業(yè)執(zhí)行前并不建立分區(qū),分區(qū)的建立是在作業(yè)的處理過(guò)程中進(jìn)行的。且其大小可隨作業(yè)或進(jìn)程對(duì)內(nèi)存的要求而改變分區(qū)的建立是在作業(yè)的處理過(guò)程中進(jìn)行的。且其大小可隨作業(yè)或進(jìn)程對(duì)內(nèi)存的要求而改變。這就改變了固定分區(qū)法中那種即使是小作業(yè)也要占據(jù)大分區(qū)的浪費(fèi)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年調(diào)查分析師考試試題及答案
- 人工智能技術(shù)研發(fā)經(jīng)驗(yàn)工作證明(5篇)
- 授權(quán)代表證明書及授權(quán)事項(xiàng)清單(8篇)
- 某中學(xué)圖書借閱統(tǒng)計(jì)分析制度
- 2025年電式混動(dòng)車項(xiàng)目申請(qǐng)報(bào)告
- 網(wǎng)絡(luò)維護(hù)外包服務(wù)協(xié)議合同書
- 經(jīng)濟(jì)學(xué)原理與經(jīng)濟(jì)形勢(shì)分析題目
- 物聯(lián)網(wǎng)技術(shù)在智慧城市規(guī)劃中的應(yīng)用協(xié)議
- 2025年注冊(cè)會(huì)計(jì)師考試《會(huì)計(jì)》財(cái)務(wù)報(bào)表分析解題思路與技巧試題
- 介紹我的日常用品作文9篇范文
- 金蟬的養(yǎng)殖管理
- 1379]國(guó)開(kāi)電大本科《人文英語(yǔ)3》歷年期末考試(第三大題閱讀選擇題)題庫(kù)
- 石家莊橋東污水處理廠三溝式氧化溝工藝設(shè)計(jì)
- 部編版六年級(jí)語(yǔ)文下冊(cè)詞語(yǔ)表(看拼音寫詞語(yǔ))
- (完整版)煤礦主扇司機(jī)考試卷(含答案)
- 血液制品發(fā)展制約因素分析:基礎(chǔ)薄弱起步晚
- 雙柏縣工業(yè)用大麻開(kāi)發(fā)種植實(shí)施計(jì)劃方案
- 租賃房屋交接清單
- 設(shè)計(jì)加熱爐推料機(jī)傳動(dòng)裝置
- 電梯維保人員管理制度
- 吊頂檢驗(yàn)報(bào)告(共5頁(yè))
評(píng)論
0/150
提交評(píng)論