操作系統(tǒng)課程設(shè)計(jì)_第1頁(yè)
操作系統(tǒng)課程設(shè)計(jì)_第2頁(yè)
操作系統(tǒng)課程設(shè)計(jì)_第3頁(yè)
操作系統(tǒng)課程設(shè)計(jì)_第4頁(yè)
操作系統(tǒng)課程設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、中北大學(xué)操作系統(tǒng)課程設(shè)計(jì)說(shuō) 明 書(shū) 學(xué) 院、系:軟件學(xué)院專(zhuān) 業(yè):軟件工程學(xué) 生 姓 名:xxx學(xué) 號(hào):設(shè) 計(jì) 題 目:磁盤(pán)存儲(chǔ)空間管理的算法模擬 起 迄 日 期:指 導(dǎo) 教 師:xxx   1.需求分析本設(shè)計(jì)題目主要熟悉磁盤(pán)空間的管理,實(shí)現(xiàn)磁盤(pán)空間的分配和回收操作。通過(guò)本次設(shè)計(jì),幫助我們理解在磁盤(pán)中的分配方法,以及如何充分有效地利用磁盤(pán)空間,使我們初步具有研究、設(shè)計(jì)、編制和調(diào)試操作系統(tǒng)模塊的能力。在這次實(shí)驗(yàn)中我所負(fù)責(zé)的設(shè)計(jì)內(nèi)容是:采用空白塊成組鏈接結(jié)構(gòu)實(shí)現(xiàn)磁盤(pán)空間的分配和回收,基本要求有兩點(diǎn)分別是:(1) 具有創(chuàng)建文件、空間分配、刪除文件、釋放空間等基本功能;(2

2、) 把個(gè)文件目錄、磁盤(pán)空間管理的數(shù)據(jù)結(jié)構(gòu)變化情況顯示出來(lái)。最后,在linux系統(tǒng)中,實(shí)現(xiàn)了采用空白塊成組鏈接結(jié)構(gòu)實(shí)現(xiàn)磁盤(pán)空間的分配和回收。2.總體設(shè)計(jì)磁盤(pán)空間回收的流程磁盤(pán)空間分配的流程整個(gè)程序分為兩個(gè)模塊,分別是分配和回收。(1)分配時(shí),查MA,從中找出空閑塊號(hào),當(dāng)一組的空閑塊只剩第一塊時(shí),應(yīng)把該塊中指出的下一組的空閑塊數(shù)和塊號(hào)復(fù)制到專(zhuān)用塊這,然后把該塊分配給申請(qǐng)者,當(dāng)一組的空閑塊分配完后則把專(zhuān)用塊內(nèi)容(下一組鏈接情況)復(fù)制到內(nèi)存,再為申請(qǐng)者分配。  (2)回收時(shí),輸入待回收的塊號(hào),查找該塊是否已被分配,若未分配,退出,否則,當(dāng)前組不滿(mǎn)規(guī)定塊數(shù)時(shí),將歸還塊登記入該組,若當(dāng)前組已滿(mǎn),

3、則另建一新組,這時(shí)歸還塊作為新一組的第一塊,應(yīng)把內(nèi)存中登記的一組鏈接情況MA復(fù)制到歸還塊中,然后在MA這重新登記一個(gè)新組。顯示分組情況。3詳細(xì)設(shè)計(jì)(1) 假定磁盤(pán)存儲(chǔ)空間已被劃分成長(zhǎng)度為n的等長(zhǎng)塊,共有M塊可供使用。UNIX系統(tǒng)中采用空閑塊成組鏈接的方法 來(lái)管理磁盤(pán)存儲(chǔ)空間,將磁盤(pán)中的每N個(gè)空閑塊(N<M)分成一組,最后一組可以不足N塊,每組的第一塊中登記了下一組空閑塊的塊數(shù)和塊號(hào),第一組的塊數(shù)和塊號(hào)登記在專(zhuān)用塊中,登記的格式如下: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)的空閑塊成

4、組鏈接,假定共有8塊可供使用,每3塊為一組,則空閑塊成組鏈接的初始狀態(tài)為:開(kāi)始時(shí),空閑塊號(hào)是順序排列的,但經(jīng)若干次的分配和歸還操作后,空閑塊的鏈接就未必按序排列了。用二維數(shù)組A:array 0M-1 of array 0n-1來(lái)模擬管理磁盤(pán)空間,用Ai表示第I塊,第0塊A0作為專(zhuān)用塊。(3) 成組鏈接的分組情況記錄在磁盤(pán)物理塊中,為了查找鏈接情況,必須把它們讀入主存,故當(dāng)磁盤(pán)初始化后,系統(tǒng)先將專(zhuān)用塊內(nèi)容復(fù)制到主存中。定義一個(gè)數(shù)組MA存放專(zhuān)用塊內(nèi)容,即MA: =A0。申請(qǐng)一塊磁盤(pán)空間時(shí),查MA,從中找出空閑塊號(hào),當(dāng)一組的空閑塊只剩第一塊時(shí),則應(yīng)把該塊中指出的下一組的空閑塊數(shù)和塊號(hào)復(fù)制到專(zhuān)用塊中,

5、然后把該塊分配給申請(qǐng)者。當(dāng)一組的空閑塊分配完后則把專(zhuān)用塊內(nèi)容(下一組鏈接情況)復(fù)制到主存,再為申請(qǐng)者分配。分配算法如圖6-1。圖6-1 采用成組鏈接的分配算法(4) 歸還一塊時(shí)給出歸還的塊號(hào),叵當(dāng)前組不滿(mǎn)規(guī)定塊數(shù)時(shí),將歸還塊登記入該組;若當(dāng)前組已滿(mǎn),則另建一新組,這時(shí)歸還塊作為新一組的第一塊,應(yīng)把主存中登記的一組鏈接情況MA復(fù)制到歸還塊中,然后在MA重新登記一個(gè)新組。歸還一塊的算法如圖6-2。圖6-2 采用成組鏈接的回收算法(5) 設(shè)計(jì)分配和歸還磁盤(pán)空間的程序,能顯示或打印分配的磁盤(pán)空間的塊號(hào),在完成一次分配或歸還后能顯示或打印各空閑塊組的情況(各組的空閑塊數(shù)和塊號(hào))。本實(shí)習(xí)省去了塊號(hào)與物理地

6、址之間的轉(zhuǎn)換工作,而在實(shí)際的系統(tǒng)中必須進(jìn)行塊號(hào)與物理地址的轉(zhuǎn)換工作。(6) 運(yùn)行你所設(shè)計(jì)的程序,假定空閑塊鏈接的初始狀態(tài)如提示(2),現(xiàn)先分配4塊,再依次歸還第2塊和第6塊。把執(zhí)行后分配到的塊號(hào)依次顯示或打印出來(lái),且顯示或打印空閑塊組的情況。在上次執(zhí)行的基礎(chǔ)上繼續(xù)分配3塊,然后歸還第1塊,再申請(qǐng)5塊,顯示或打印依次分配到的塊號(hào)及空閑塊組情況。4. 代碼#include<stdio.h>int 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;

7、/*磁盤(pán)空間*/int mark9; /*存放已分配的塊*/int No=0; /*已分配的塊數(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

8、;j+) printf("%d ",Atempj); mark+No=Atempj; count+; temp=Atemp1; printf("ngroup%d:",count); i=Atemp0; for(j=2;j<=i+1;j+) if(Atempj>0) printf("%d ",Atempj); mark+No=Atempj; else i=MA0; if(i=1) printf("n所有的塊分配"); else printf("ngroup1:"); for(j=2;j

9、<=i;j+) printf("%d ",MAj); mark+No=MAj; void display() /*顯示分組情況*/ int i,j; if(MA0!=0) display1(); else i=MA1; for(j=0;j<=3;j+) MAj=Aij; display1(); void assign() /*分配空閑塊*/ int s,i; if(MA0>1) /*若該組不止一個(gè)空閑塊*/ i=MA0; s=MAi; MA0-; printf("n空閑塊的塊數(shù):%d",s); else if(MA0=1) /*只剩一個(gè)

10、空閑塊*/ if(MA1!=0) /*還有其它空閑塊組*/ s=MA1; for(i=0;i<=3;i+) A0i=Asi; MA0-; printf("n空閑塊的塊數(shù):%d",s); else /*沒(méi)有其它空閑塊組*/ printf("n沒(méi)有任何空間"); return; else /*當(dāng)前組已分配完*/ for(i=0;i<=3;i+) MAi=A0i; assign(); display(); /*顯示分組情況*/ void callback() /*回收空閑塊*/ int i,j,temp; printf("n輸入你想回收的

11、塊號(hào):"); scanf("%d",&j); getchar(); /*得到待回收的空閑塊號(hào)*/ for(temp=1;temp<=No;temp+) if(marktemp=j) break; if(temp<No+1) /*若該空閑塊已在,退出*/ printf("n該空閑塊已存在"); return; if(MA0<3) /*當(dāng)前組不滿(mǎn)3塊*/ i=MA0; MAi+1=j; MA0+; else /*已有3塊*/ for(i=0;i<=3;i+) Aji=MAi; MA0=1; MA1=j; displa

12、y(); /*顯示*/ 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無(wú)效命令!"); printf("n繼續(xù)還是結(jié)束?(Y -繼續(xù),N-返回)"); scanf("%c",&judge); getchar(); if(judge='y') menu(); else printf("n現(xiàn)在,該圖是:"); display(); printf(

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論