




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、上海電力學(xué)院課程設(shè)計(jì)報(bào)告課程名稱:操作系統(tǒng)原理題目名稱: 采用可變分區(qū)存儲管理,模擬主存空間的分配和回收姓 名:XXX學(xué) 號: XXX班 級: 2013054 同組姓名:XXX課程設(shè)計(jì)時間:2015.7.6 2015.7.10評語:成績:課程設(shè)計(jì)題目一、 設(shè)計(jì)內(nèi)容及要求可變分區(qū)存儲管理模擬設(shè)計(jì)內(nèi)容 : 編寫程序模擬實(shí)現(xiàn)可變分區(qū)存儲管理。具體要求: 編寫程序模擬實(shí)現(xiàn)可變分區(qū)存儲管理, 實(shí)現(xiàn)存儲管理的基本功能, 包括內(nèi)存的分配、 內(nèi) 存的回收、地址變換等。輸入: 1、輸入新進(jìn)程名稱及使用內(nèi)存的大?。蓜?chuàng)建多個進(jìn)程);2、撤銷某個指定的進(jìn)程; 3、某個進(jìn)程的邏輯地址;輸出: 顯示每次創(chuàng)建進(jìn)程或者撤銷
2、進(jìn)程后內(nèi)存使用的狀況, 包括每一個進(jìn)程占據(jù)的內(nèi)存 的位置和大小;計(jì)算并輸出給定邏輯地址對應(yīng)的物理地址。 必須分別使用以下分配算法完成模擬:1、首次適應(yīng)算法;2、最佳適應(yīng)算法;3、最差適應(yīng)算法;小組分工:程序設(shè)計(jì)討論:程序主體設(shè)計(jì): 程序調(diào)試及修改: 實(shí)驗(yàn)報(bào)告設(shè)計(jì): 總結(jié):(要求注明小組分工情況)詳細(xì)設(shè)計(jì)1)原理概述對于可變分區(qū)存儲管理的內(nèi)存分配與回收,主要為設(shè)計(jì)以下幾個部分:1、設(shè)計(jì)動態(tài)輸入空閑分區(qū)表的程序2、設(shè)計(jì)內(nèi)存分配的程序3、設(shè)計(jì)內(nèi)存回收的程序首次適應(yīng)算法 :FF算法要求空閑分區(qū)表或空閑分區(qū)鏈以地址遞增的次序鏈接。在分配內(nèi)時, 從鏈?zhǔn)组_始查找, 直至找到一個大小能滿足要求分區(qū)為止; 然后
3、再按照作業(yè)大小, 從 該分區(qū)中劃一塊內(nèi)存空間分配給請求者, 余下的空閑分區(qū)仍留在空閑鏈中。 如從鏈?zhǔn)?直至鏈尾都不能找到一個能滿足要求的分區(qū),則此次分配失敗,返回最佳適應(yīng)算法 :BF 算法是指每次為作業(yè)分配內(nèi)存,總是把滿足要求、又是最小的空閑分區(qū)分 配給作業(yè),避免“大材小用”。為了加速尋找,該算法要求所有的空閑分區(qū)按其容 量以從小到大的順序形成一空閑分區(qū)鏈。這樣,第一次找到能滿足要求的空閑區(qū),必然是最佳的。最差適應(yīng)算法:WF算法要掃描整個空閑分區(qū)表或鏈表,總是挑一個最大的空閑區(qū)分割給作業(yè) 使用,其優(yōu)點(diǎn)是可使剩下的空閑區(qū)不至于太小,產(chǎn)生碎片的幾率最小,對中、小作 業(yè)有利,同時最壞適應(yīng)分配算法查找
4、出效率很高。該算法要求將所有的空閑分區(qū)按 其容量以從小到大的順序形成一空閑分該算法要求將所有的空閑分區(qū)按其容量以從 小到大的順序形成一空閑分區(qū)鏈,查找時只要看第一個分區(qū)能否滿足作業(yè)要求。2) 主要數(shù)據(jù)結(jié)構(gòu)1、空閑分區(qū)表的定義public class fenqu publicint fenquno,fenqusize,fenqustart;publicStr ingproc name ;publicstaticintcofe nqusize=0; /創(chuàng)建起始分區(qū)基址publicfen qu( intfenquno,intfen qusize)this.fenquno =fenquno;this.
5、fen qusize=fen qusize;this.fen qustart= cofe nqusizeJcofe nqusize+=fe nqusize;proc name =n ull ;publicfen qu(int fenquno, int fen qusize,int fen qustart)this . fenquno =fenquno;this .fen qusize =fen qusize;this .fen qustart =fen qustart;proc name =n ull ;已分配分區(qū)表的定義public static void createfe nqu()int
6、in tRe=new int 5;/fe nquno的隨機(jī)數(shù)intin tREE=new int5;/fe nqusize的隨機(jī)數(shù)產(chǎn)生;intin tRd;/存放隨機(jī)數(shù)intin tRDD;intcou nt=0,cou nt1=O;/產(chǎn)生的隨機(jī)數(shù)的個數(shù),count是fenquno , count1 是fen qusizeint flag=0; /是否產(chǎn)生過隨機(jī)數(shù)Random rdm= new Random(); while (count<intRe. length ) intRd=Math. abs (rdm.nextInt()%5;for ( int i=0;i<count;i
7、+)if (intRei=intRd)flag=1; break ;elseflag=0;if (flag=0) intRecount=intRd; count+;while (count1<intREE. length )intRDD=( int )(Math. random ()*(60+1-30)+30; for ( int i=0;i<count1;i+)if (intREEi=intRDD)flag=1; break ;elseflag=0;if (flag=0) intREEcount1=intRDD; count1+; for ( int i=0;i<5;i+)
8、alist .add( new fenqu(intRei,intREEi);ll .add( new doubleNode( null , null ,intRei,intREEi,0);System. out .println(alist" + alist .get(i). fenqusize+"" +alist+" "+ll.get(i)." +ll .get(i). fenqusize +"I!+ll .get(i).get(i). fenquno +" .get(i). fenqustart fenquno
9、 +"re );System. out .println( " 區(qū)號 " +" 小" +" 分配 " );for ( int i=0;i< alist .size();i+)內(nèi)存 " +" 地址 " +" 原分區(qū) " +" 原大內(nèi)存分配publicstatic void fenpeineicun(process p)boolean re= trueif (p. JCname = alist re= false ;.get(k)for ( int k=0;k&l
10、t; alist .size();k+)procname )if (re)int i=0,j;ll .comparefenqusize(p.JCsize , maxfenquno );if ( alist .size()< ll . theSize )for (i=0;i< alist .size();i+)for (j=0;j< ll . theSize ;j+)if ( alist e!= ll .get(j).get(i). fenquno =ll .get(j). fenqusize )alist .get(i).fenquno &&alist .ge
11、t(i). fenqusizfenqusize =ll .get(j). fenqusizert +alist .get(i).fenquno, ll.get(i+1).fenqusize, alist .get(i).fenqustafenqusize);alist.add(fe);alist.get(i).procname=p. JCname ;maxfenquno +;fenqu fe= newfenqu( ll .get(i+1).elsefor (i=0;i< alist .size();i+)for (j=0;j< ll . theSize ;j+)fenqusizif
12、 ( alist .get(i). fenquno =ll .get(j). fenquno &&alist .get(i). e=p. JCsize )alist .get(i). procname =p. JCname ;elseSystem. out .println(" 有同名進(jìn)程,不能分配內(nèi)存 " );public staticvoid FF(process p)sortaddress fenpeineicunpublic staticsortmintomax fenpeineicunpublic staticsortmaxtomin fenpei
13、neicun();(p);void BF(process p)();(p);void WF(process p)();(p);1、內(nèi)存回收public static void dropprocess(String name)boolean re= true ;for ( int i=0;i< ll . theSize ;i+)if ( ll .get(i).re =1)for ( int j=O;j< alist .size();j+)if ( ll.get(i).fenquno = alist.get(j).fenquno &&alist .get(j).proc
14、 nameequals( name)ll .get(i).re =0;alist .get(i).proc name =n ull ;re= false ;System. out.println(“進(jìn)程撤銷成功");if(re)System.out.pri ntl n("不存在該進(jìn)程“);3)算法(流程圖)內(nèi)存分配:從頭開始查表檢索完否?二Y4返回)m.size > u.size?">N繼續(xù)檢索下一個表項(xiàng)YYm.size u.size sZe?N從該分區(qū)中劃岀u.size大小的分區(qū)將該分區(qū)從鏈中移出>丁將該分區(qū)分配給請求者修 改有關(guān)數(shù)據(jù)結(jié)構(gòu)返回p
15、ublicstaticvoid fenpeineicun(process p)ife!= llfenqu(booleanfor ( intifre= truek=0;k< alist .size();k+)if (p. JCname = alistre= false ;(re)( alist.get(j).get(k). procname )int i=0,j;.comparefenqusize(p.llifJCsize, maxfenquno );( alistfor.get(i).size()< ll(i=0;i< alist. theSize.size();i+)for
16、 (j=0;j< ll . theSizefenquno =ll .get(j).fenqusize )ll .get(i+1).fenqunoalist .get(i). fenqu fe= new , ll.get(i+1).rt +alist .get(i).fenqusize);alist.add(fe);j+)fenqunofenqusizefenqusize&&alist .get(i).=ll .get(j)., alist .get(i).fenqusizfenqusizefenqustaelsefor(i=0;i<if ( alist .get(i
17、). e=p. JCsize ).get(i). maxfenquno +;alistprocname=p. JCname ;alist .size();i+)for (j=0;j< ll . theSizefenquno =ll .get(j).alist .get(i).;j+)fenqunoprocname&&alist .get(i).=p. JCname ;fenqusizelseSystem. out .println(”有同名進(jìn)程,不能分配內(nèi)存");1、首次適應(yīng)算法開始是不能輸入作業(yè)J結(jié)束實(shí)現(xiàn)算法主要代碼:public static void so
18、rtaddress()fen qu d;II .removeAII();for ( int i=0;i< alist .size();i+)for (int j=i+1;j< alist .size();j+)if (alist .get(i). fenqustart >alist .get(j).fenqustart)d= alist .get(i);alist.set(i,alistalist.set(j,d);for(inti=0;i<alist.size();i+)if ( alist.get(i).proc namell.add(newdoubleNode(n
19、ull5null ,alist.get(i).elsell.add(newdoubleNode(null5null ,alist.get(i).get(j);!= n ull )fenquno , alist.get(i).fen qusize,1);fenquno , alist.get(i).fen qusize,0);2、最佳適應(yīng)算法i I否"查看空閑區(qū)表' 是否有空閑區(qū)F是將作業(yè)與排好的 分區(qū)容量對比J丿1FrI最佳的進(jìn)行輸入r/長度=長度-XK 起址=起址+XKJ1fw輸出分配情況結(jié)束public static void sortm in tomax()fen qu
20、 d;II .removeAII();for ( int i=0;i< alist .size();i+)for (int j=i+1;j< alist .size();j+)fen qusize )if (alist .get(i). fenqusize >alist .get(j).proc name != n ull )d= alist .get(i);alist.set(i,alist .get(j);alist.set(j,d);for ( int i=0;i<alist .size();i+)if ( alist .get(i).ll.add(newdoub
21、leNode(n ull ,null ,alistget(i)elsell.add(newdoubleNode(n ull ,null ,alistget(i)fenquno,alist.get(i).fen qusize,1);fenquno,alist.get(i).fen qusize,0);3、最差適應(yīng)算法結(jié)束public static void sortmaxtomin()fenqu d;ll .removeAll();for ( int i=0;i< alist .size();i+)for ( int j=i+1;j< alist .size();j+)if ( al
22、ist .get(i). fenqusize < alist .get(j). fenqusize )d= alist.get(i);alist.set(i, alistalist.set(j,d);for( inti=0;i<alist.size();i+)if ( alist.get(i).procnamell.add(newdoubleNode(null>null ,alist.get(i).elsell.add(newdoubleNode(null>null ,alist.get(i).get(j);!= null )fenquno , alist.get(i)
23、.fenqusize,1);fenquno , alist.get(i).fenqusize,0);4)源程序文件名 執(zhí)行文件名 doubleNode.javaFenqu.javaLinkedlist.javaMainproc.java三、實(shí)驗(yàn)結(jié)果與分析(要有結(jié)果截圖)隨機(jī)產(chǎn)生內(nèi)存分區(qū):main proc (1J 卩劃沖 AppiGtiD 勺 QMyfechpse Prof e s si o nalb n a syc om .su n j i區(qū)號內(nèi)樓地址酚區(qū)庾大小舟配1 MjLS322S301 3.32&3132Q03585a磋04391204390315»從犬到小IfJ?3
24、刖03Ei159D nullpCa dlil32Qo nullIo35eso null:30皿IL請諭人創(chuàng)建的進(jìn)程數(shù)卜于輸入進(jìn)程:請輸入雉程售請端人*吞大小諳輸人進(jìn)再戌序殆地廿嗟岫入進(jìn)程客.b捂墉人逍程前i?鐮地址20対進(jìn)程進(jìn)行算法執(zhí)行: 首次適應(yīng)算法:進(jìn)理士內(nèi)專分配咸5 進(jìn)程川內(nèi)步分配咸3總內(nèi)存空問:2i 7剩余內(nèi)存:16?可用為彎T辰33003J5133050?404321 93£C44513a0C1S71S04-石15S310進(jìn)程名瑋顯進(jìn)程大小3進(jìn)衽所在內(nèi)存分區(qū)汩內(nèi)存位置272進(jìn)程枷遅乜屯;:2C進(jìn)探黃資字逬程所在內(nèi)存分區(qū)注內(nèi)看位盞:44耽進(jìn)程韌哩創(chuàng):總最佳適應(yīng)算法:懇內(nèi)掃空閭:鮎
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 少兒健康教育練習(xí)題與答案
- 化妝師??荚囶}含參考答案
- 化學(xué)人教版24新版本九年級初三上冊碳的氧化物2教學(xué)教案含答案
- 胃腸外科工作總結(jié)
- 肉沫土豆制作流程
- 三八節(jié)女職工普法知識答題(試題及答案)
- “雙減”政策實(shí)施后小學(xué)美術(shù)作業(yè)設(shè)計(jì)的變化研究
- 腫瘤治療發(fā)展歷程
- 構(gòu)建創(chuàng)新合作模式:推動企業(yè)發(fā)展的協(xié)同效應(yīng)
- 衛(wèi)生間保養(yǎng)知識培訓(xùn)
- YS/T 269-2008丁基鈉(鉀)黃藥
- GB 1523-2013綿羊毛
- 2004年考研英語一真題及答案
- 劉半農(nóng)《教我如何不想她》課件
- 前行第07節(jié)課(僅供參考)課件
- 博弈論與信息經(jīng)濟(jì)學(xué)課件
- 界面砂漿檢測報(bào)告
- 浙江鞋業(yè)出口貿(mào)易研究
- 模塊二項(xiàng)目二觀察力課件
- (完整版)環(huán)境科學(xué)與工程-專業(yè)英語詞匯
- 中考形容詞副詞專題復(fù)習(xí)市公開課一等獎省名師優(yōu)質(zhì)課賽課一等獎?wù)n件
評論
0/150
提交評論