資源描述:
《實驗三 文件系統(tǒng)空白空間管理-空白目錄》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、操作系統(tǒng)原理實驗三文件存儲空間管理模擬學(xué)號班級姓名指導(dǎo)老師實驗時間2014.6.5實驗三文件存儲空間管理模擬1.內(nèi)容:模擬文件存儲空間的管理,采用空白文件目錄法和空白塊鏈法實施空間分配。2.思想:文件存儲空間管理是文件系統(tǒng)的重要內(nèi)容。常用的管理思想有空白文件目錄法、空白塊鏈法和位示圖法。本實驗采用前兩種方法進行空間分配。(1)空白文件目錄法進行空間分配時,需要建立相關(guān)的數(shù)據(jù)結(jié)構(gòu),記錄目前空白區(qū)域和已使用區(qū)域,假設(shè)開始時全部區(qū)域空閑。當(dāng)有文件需要存儲時,先檢查空白文件目錄,找到適合區(qū)域立即分配,并修改空白文件目錄表和已使用區(qū)域分配表。為此需建立兩張表格,
2、分別記錄相關(guān)數(shù)據(jù)。空白文件目錄表(初始)序號首空白塊號空白快個數(shù)物理塊號備注101000,1,2,……,98,99空白文件目錄(中間)序號首空白塊號空白塊個數(shù)物理塊號標(biāo)志1242,3,4,5未分配2939,10,11未分配325525,26,27,28,29未分配439239,40未分配5………………未分配文件標(biāo)識首塊號文件塊個數(shù)狀態(tài)備注beta02占用Alpha63占用Toyota1213占用Sony309占用Ford504占用……………………已使用區(qū)域表(中間)上述兩張表的數(shù)據(jù)在系統(tǒng)運行中是發(fā)生變化的。文件空閑區(qū)分配和釋放算法如下圖所示:圖一文件空
3、閑區(qū)分配算法圖二文件空閑區(qū)回收算法(2)空白塊鏈法進行空間分配時,需要建立鏈表數(shù)據(jù)結(jié)構(gòu),將空閑塊按順序加以組織,分配和回收時在鏈首完成,同時建立文件目錄,記錄文件占用空間情況。文件標(biāo)識首塊號備注beta0Alpha6Toyota12Sony30Ford50…………源代碼#include#include#includeintmaxid=4;//空白表數(shù)目intmaxnum=4;//文件個數(shù)//空白文件typedefstruct{intid;intfirstblock;intblocknum;int
4、lastblock;}Space;//分配文件typedefstruct{charflag[10];intfirstnum;intfullnum;intlastnum;}Full;//初始化分配Fullfull[20]={{"Bete",0,2,1},{"Aple",6,3,8},{"Toyo",12,13,24},{"Ford",30,9,38}};Spacefile[20]={{1,2,4,5},{2,9,3,11},{3,25,5,29},{4,39,62,100}};//分配打印voidfullprint(){printf("文件名t首塊號
5、t文件塊個數(shù)末塊號");for(inti=0;i6、id,file[i].firstblock,file[i].blocknum,file[i].lastblock);}printf("當(dāng)前空白區(qū)數(shù)目=%d",maxid);}voiddistribute(){//分配函數(shù)charS_File[10];//文件名intM;//申請塊數(shù)inttemp;//被分配的首塊號printf("文件分配");printf("輸入文件名");scanf("%s",S_File);printf("輸入申請塊數(shù)");scanf("%d",&M);for(intf=0;f7、i=maxid){printf("本次無法分配");return;}if(file[f].blocknum>=M){temp=file[f].firstblock;printf("空白分區(qū)可用");if(file[f].blocknum==M){for(;f8、irstblock=file[f+1].firstblock;file[f].blocknum