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

下載本文檔

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

文檔簡介

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

2、文件目錄、磁盤空間管理的數(shù)據(jù)結(jié)構(gòu)變化情況顯示出來。最后,在linux系統(tǒng)中,實現(xiàn)了采用位示圖結(jié)構(gòu)實現(xiàn)磁盤空間的分配和回收。2.總體設(shè)計磁盤空間回收的流程磁盤空間分配的流程整個程序分為兩個模塊,分別是分配和回收。位示圖法:一個簡單的管理方法是用一張位示圖(簡稱位圖)來指示磁盤存儲空間的使用情況。一個盤組的分塊確定后,根據(jù)分配的總塊數(shù)決定位圖由多少個字組成,建筑位圖中的每一位與盤組分塊1-1對應(yīng),“1”狀態(tài)表示相應(yīng)塊已占用,“0”狀態(tài)表示該塊空閑。位示圖是一張可以反映磁盤空間是否被占有的模擬圖,用一個二維數(shù)組表示磁盤的空間,數(shù)組內(nèi)每一個元素表示磁盤內(nèi)相應(yīng)的分塊,數(shù)組元素為“1”表示該塊已被占,“0

3、”表示該塊為空。數(shù)組元素位置與磁盤分塊一一對應(yīng),即可描述出磁盤空間的利用情況。3 詳細(xì)設(shè)計(1) 為了提高磁盤存儲空間的利用率,可在磁盤上組織成鏈接文件、索引文件,這類文件可以把邏輯記錄存放在不連續(xù)的存儲空間。為了表示哪些磁盤空間已被占用,哪些磁盤空間是空閑的,可用位示圖來指出。位示圖由若干字節(jié)構(gòu)成,每一位與磁盤上的一塊對應(yīng),“1”狀態(tài)表示相應(yīng)塊已占用,“0”狀態(tài)表示該塊為空閑。位示圖的形式與實習(xí)四中的位示圖一樣,但要注意,對于主存儲空間和磁盤存儲空間應(yīng)該用不同的位示圖來管理,絕不可混用。(2) 申請一塊磁盤空間時,由分配程序查位示圖,找出一個為“0”的位,計算出這一位對應(yīng)塊的磁盤物理地址,且

4、把該位置成占用狀態(tài)“1”。假設(shè)現(xiàn)在有一個盤組共80個柱面,每個柱面有兩個磁道,每個磁道分成4個物理記錄。那么,當(dāng)在位示圖中找到某一字節(jié)的某一位為“0”時,這個空閑塊對應(yīng)的磁盤物理地址為:柱面號=字節(jié)號位數(shù)4磁道號= 位數(shù)4物理記錄號= (3) 歸還一塊磁盤空間時,由回收程序根據(jù)歸還的磁盤物理地址計算出歸還塊在位示圖中的對應(yīng)位,把該位置成“0”。按照(2)中假設(shè)的盤組,歸還塊在位示圖中的位置計算如下:字節(jié)號=柱面號位數(shù)=磁道號´4+物理記錄號(4) 設(shè)計申請一塊磁盤空間和歸還一塊磁盤空間的程序。要求能顯示或打印程序運行前和運行后的位示圖;分配時把分配到的磁盤空間的物理地址顯示或打印出來

5、,歸還時把歸還塊對應(yīng)于位示圖的字節(jié)號和位數(shù)顯示或打印出來。4. 代碼#include <stdio.h> #include <pthread.h> void Initbitmap(int map88) int cylinder,track,sector;char choice='Y'printf("初始化位視圖.n");while(choice='y'|choice='Y')printf("柱面號:");scanf("%d",&cylinder);prin

6、tf("磁道號:");scanf("%d",&track);printf("物理記錄號:");scanf("%d",&sector);mapcylinder4*track+sector=1;printf("contiune?");getchar();scanf("%c",&choice); void allocate(int map88) int i,j; int flag=0;int cylinder,track,sector;for(i=0;i&l

7、t;8;i+)for(j=0;j<8;j+) if(mapij=0) mapij=1;flag=1;break; if(flag=1) break; if(flag=1) cylinder=i; track=j/4; sector=j%4; printf("分配到的柱面號、磁道號、物理記錄數(shù)"); printf("%dt%dt%d",cylinder,track,sector); printf("n"); else printf("空間不足,分配失敗!"); void reclaim(int map88) i

8、nt cylinder,track,sector; printf("柱面號:"); scanf("%d",&cylinder); printf("磁道號:"); scanf("%d",&track); printf("物理記錄號:"); scanf("%d",&sector); if(mapcylinder4*track+sector=0) printf("此塊為未分配塊!回收出錯!"); getchar(); else mapcy

9、linder4*track+sector=0; printf("回收塊對應(yīng)的字節(jié)號:%4dt位數(shù):%4dn",cylinder,4*track+sector); main() int bitmap88; int i,j; int choice; for(i=0;i<8;i+) for(j=0;j<8;j+) bitmapij=0; Initbitmap(bitmap); while(1) printf("n請輸入選擇:"); printf("1-分配,2-回收,3-顯示位示圖,0-退出n"); scanf("%d",&choice); switch(choice) case 1:allocate(bitmap);break; case 2:reclaim(bitmap);break; case 3:for(i=0;i<8;i+) for(j=0;j<8;j+) printf("%8d",bitmapij); printf("n"); break; case 0:exit(0); defa

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論