




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、中北大學(xué)操作系統(tǒng)課程設(shè)計(jì)說 明 書學(xué) 院、系:軟件學(xué)院專 業(yè):軟件工程學(xué) 生 姓 名:xxx學(xué) 號(hào):設(shè) 計(jì) 題 目:磁盤存儲(chǔ)空間管理的算法模擬 起 迄 日 期:指 導(dǎo) 教 師:xxx 1.需求分析本設(shè)計(jì)題目主要熟悉磁盤空間的管理,實(shí)現(xiàn)磁盤空間的分配和回收操作。通過本次設(shè)計(jì),幫助我們理解在磁盤中的分配方法,以及如何充分有效地利用磁盤空間,使我們初步具有研究、設(shè)計(jì)、編制和調(diào)試操作系統(tǒng)模塊的能力。在這次實(shí)驗(yàn)中我所負(fù)責(zé)的設(shè)計(jì)內(nèi)容是:采用空白塊成組鏈接結(jié)構(gòu)實(shí)現(xiàn)磁盤空間的分配和回收,基本要求有兩點(diǎn)分別是:(1) 具有創(chuàng)建文件、空間分配、刪除文件、釋放空間等基本功能;(2) 把個(gè)文件目錄、磁盤空間管理的數(shù)據(jù)
2、結(jié)構(gòu)變化情況顯示出來。最后,在linux系統(tǒng)中,實(shí)現(xiàn)了采用空白塊成組鏈接結(jié)構(gòu)實(shí)現(xiàn)磁盤空間的分配和回收。2.總體設(shè)計(jì)磁盤空間回收的流程磁盤空間分配的流程整個(gè)程序分為兩個(gè)模塊,分別是分配和回收。(1)分配時(shí),查MA,從中找出空閑塊號(hào),當(dāng)一組的空閑塊只剩第一塊時(shí),應(yīng)把該塊中指出的下一組的空閑塊數(shù)和塊號(hào)復(fù)制到專用塊這,然后把該塊分配給申請者,當(dāng)一組的空閑塊分配完后則把專用塊內(nèi)容(下一組鏈接情況)復(fù)制到內(nèi)存,再為申請者分配。 (2)回收時(shí),輸入待回收的塊號(hào),查找該塊是否已被分配,若未分配,退出,否則,當(dāng)前組不滿規(guī)定塊數(shù)時(shí),將歸還塊登記入該組,若當(dāng)前組已滿,則另建一新組,這時(shí)歸還塊作為新一組的第一塊,應(yīng)把
3、內(nèi)存中登記的一組鏈接情況MA復(fù)制到歸還塊中,然后在MA這重新登記一個(gè)新組。顯示分組情況。3詳細(xì)設(shè)計(jì)(1) 假定磁盤存儲(chǔ)空間已被劃分成長度為n的等長塊,共有M塊可供使用。UNIX系統(tǒng)中采用空閑塊成組鏈接的方法 來管理磁盤存儲(chǔ)空間,將磁盤中的每N個(gè)空閑塊(NM)分成一組,最后一組可以不足N塊,每組的第一塊中登記了下一組空閑塊的塊數(shù)和塊號(hào),第一組的塊數(shù)和塊號(hào)登記在專用塊中,登記的格式如下:0空閑塊數(shù)k1空閑塊號(hào)12空閑塊號(hào)2MMMMK空閑塊號(hào)kMMMM當(dāng)?shù)谝豁?xiàng)內(nèi)容為“0”時(shí),則第二項(xiàng)起指出的空閑塊是最后一組。(2) 現(xiàn)模擬UNIX系統(tǒng)的空閑塊成組鏈接,假定共有8塊可供使用,每3塊為一組,則空閑塊成組
4、鏈接的初始狀態(tài)為:開始時(shí),空閑塊號(hào)是順序排列的,但經(jīng)若干次的分配和歸還操作后,空閑塊的鏈接就未必按序排列了。用二維數(shù)組A:array 0M-1 of array 0n-1來模擬管理磁盤空間,用Ai表示第I塊,第0塊A0作為專用塊。(3) 成組鏈接的分組情況記錄在磁盤物理塊中,為了查找鏈接情況,必須把它們讀入主存,故當(dāng)磁盤初始化后,系統(tǒng)先將專用塊內(nèi)容復(fù)制到主存中。定義一個(gè)數(shù)組MA存放專用塊內(nèi)容,即MA: =A0。申請一塊磁盤空間時(shí),查MA,從中找出空閑塊號(hào),當(dāng)一組的空閑塊只剩第一塊時(shí),則應(yīng)把該塊中指出的下一組的空閑塊數(shù)和塊號(hào)復(fù)制到專用塊中,然后把該塊分配給申請者。當(dāng)一組的空閑塊分配完后則把專用塊
5、內(nèi)容(下一組鏈接情況)復(fù)制到主存,再為申請者分配。分配算法如圖6-1。圖6-1 采用成組鏈接的分配算法(4) 歸還一塊時(shí)給出歸還的塊號(hào),叵當(dāng)前組不滿規(guī)定塊數(shù)時(shí),將歸還塊登記入該組;若當(dāng)前組已滿,則另建一新組,這時(shí)歸還塊作為新一組的第一塊,應(yīng)把主存中登記的一組鏈接情況MA復(fù)制到歸還塊中,然后在MA重新登記一個(gè)新組。歸還一塊的算法如圖6-2。圖6-2 采用成組鏈接的回收算法(5) 設(shè)計(jì)分配和歸還磁盤空間的程序,能顯示或打印分配的磁盤空間的塊號(hào),在完成一次分配或歸還后能顯示或打印各空閑塊組的情況(各組的空閑塊數(shù)和塊號(hào))。本實(shí)習(xí)省去了塊號(hào)與物理地址之間的轉(zhuǎn)換工作,而在實(shí)際的系統(tǒng)中必須進(jìn)行塊號(hào)與物理地址
6、的轉(zhuǎn)換工作。(6) 運(yùn)行你所設(shè)計(jì)的程序,假定空閑塊鏈接的初始狀態(tài)如提示(2),現(xiàn)先分配4塊,再依次歸還第2塊和第6塊。把執(zhí)行后分配到的塊號(hào)依次顯示或打印出來,且顯示或打印空閑塊組的情況。在上次執(zhí)行的基礎(chǔ)上繼續(xù)分配3塊,然后歸還第1塊,再申請5塊,顯示或打印依次分配到的塊號(hào)及空閑塊組情況。4. 代碼#includeint MA4; /*空閑塊數(shù)組*/int A94=3,1,2,3,3,4,5,6,0,0,0,0,0,0,0,0,3,0,7,8, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0; /*磁盤空間*/int mark9; /*存放已分配的塊*/int No=0; /*已
7、分配的塊數(shù)*/void display1() int i,j,temp,count; No=0; if(MA1!=0) i=MA0; printf(ngroup1:); for(j=1;j=i;j+) printf(%d ,MAj); mark+No=MAj; temp=MA1; count=2; while(Atemp1!=0) printf(ngroup%d:,count); i=Atemp0; for(j=1;j=i;j+) printf(%d ,Atempj); mark+No=Atempj; count+; temp=Atemp1; printf(ngroup%d:,count);
8、i=Atemp0; for(j=2;j0) printf(%d ,Atempj); mark+No=Atempj; else i=MA0; if(i=1) printf(n所有的塊分配); else printf(ngroup1:); for(j=2;j=i;j+) printf(%d ,MAj); mark+No=MAj; void display() /*顯示分組情況*/ int i,j; if(MA0!=0) display1(); else i=MA1; for(j=0;j1) /*若該組不止一個(gè)空閑塊*/ i=MA0; s=MAi; MA0-; printf(n空閑塊的塊數(shù):%d,s
9、); else if(MA0=1) /*只剩一個(gè)空閑塊*/ if(MA1!=0) /*還有其它空閑塊組*/ s=MA1; for(i=0;i=3;i+) A0i=Asi; MA0-; printf(n空閑塊的塊數(shù):%d,s); else /*沒有其它空閑塊組*/ printf(n沒有任何空間); return; else /*當(dāng)前組已分配完*/ for(i=0;i=3;i+) MAi=A0i; assign(); display(); /*顯示分組情況*/ void callback() /*回收空閑塊*/ int i,j,temp; printf(n輸入你想回收的塊號(hào):); scanf(%d
10、,&j); getchar(); /*得到待回收的空閑塊號(hào)*/ for(temp=1;temp=No;temp+) if(marktemp=j) break; if(tempNo+1) /*若該空閑塊已在,退出*/ printf(n該空閑塊已存在); return; if(MA03) /*當(dāng)前組不滿3塊*/ i=MA0; MAi+1=j; MA0+; else /*已有3塊*/ for(i=0;i=3;i+) Aji=MAi; MA0=1; MA1=j; display(); /*顯示*/ void menu() /*功能選擇函數(shù)*/ int choice; char judge; printf(n輸入您的選擇:(1 -分配,2 -回收):); scanf(%d,&choice); getchar(); if(choice=1) assign(); else if(choice=2) callback(); else printf(n無效命令!); printf(n繼續(xù)還是結(jié)束?(Y -繼續(xù),N-返回)); scanf(%c,&judge); getchar(); if(judge=y) menu(); else printf(n現(xiàn)在,該圖是:); display(); printf(n按任意鍵退出
溫馨提示
- 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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- DB31/T 1176-2019城鎮(zhèn)燃?xì)夤艿浪蕉ㄏ蜚@進(jìn)工程技術(shù)規(guī)程
- DB31/T 1165-2019司法行政機(jī)關(guān)戒毒教育矯治個(gè)別教育
- DB31/T 1035-2017綠化有機(jī)覆蓋物應(yīng)用技術(shù)規(guī)范
- DB31/T 1007.2-2016西瓜生產(chǎn)技術(shù)規(guī)范第2部分:秋季大棚栽培
- DB31/T 1004-2016動(dòng)物無害化收集轉(zhuǎn)運(yùn)技術(shù)規(guī)范
- 2024年地震數(shù)據(jù)集合工作站系統(tǒng)項(xiàng)目投資申請報(bào)告代可行性研究報(bào)告
- 2024年火車自動(dòng)采樣設(shè)備資金籌措計(jì)劃書代可行性研究報(bào)告
- 2025年中國變槳系統(tǒng)行業(yè)市場前景預(yù)測及投資價(jià)值評(píng)估分析報(bào)告
- 新能源汽車性能標(biāo)準(zhǔn)聯(lián)合制定及認(rèn)證協(xié)議
- 2025年中國鋇粉行業(yè)市場前景預(yù)測及投資價(jià)值評(píng)估分析報(bào)告
- 2025年福建省福州市中考數(shù)學(xué)二檢試卷
- 藥房駐店藥師合同協(xié)議
- 湖北省武漢市2025屆高中畢業(yè)生四月調(diào)研考試政治試題及答案(武漢四調(diào))
- 行政案例分析-終結(jié)性考核-國開(SC)-參考資料
- 2024年四川省綿陽市中考英語試題卷(標(biāo)準(zhǔn)含答案)
- 2024年重慶高考化學(xué)試題卷(含答案解析)
- MOOC 電力電子學(xué)-華中科技大學(xué) 中國大學(xué)慕課答案
- 三一重工SCC2000履帶吊履帶式起重機(jī)技術(shù)參數(shù)
- [精品]GA38-2004《銀行營業(yè)場所風(fēng)險(xiǎn)等級(jí)和防護(hù)級(jí)別的規(guī)定》
- 剪紙教學(xué)課件53489.ppt
- 千斤頂詳細(xì)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論