哈爾濱理工大學
課程設計
(計算機作業系統)
題目: 檔案系統儲存空間管理
班級:姓名:
指導教師:
系主任:
2023年03月01日
目錄1檔案系統儲存空間管理 1
1.1 題目分析 1
1.2 實驗原理 1
1.3 實現技術 1
2 linux**分析 3
2.1 功能說明 3
2.4 流程圖 3
題目分析
根據提出的檔案分配和釋放請求,動態顯示磁碟空閒空間的
態以及檔案目錄的變化,以位示圖和索引分配為例:每次執行請求後要求顯示或列印位示圖的修改位置、分配和**磁碟的物理塊位址、更新的位示圖、目錄
為實現上述設計,採用c++語言,vs2008開發環境。具體採用的技術如下::1. 模擬檔案空間分配、釋放過程,可選擇連續分配、鏈式分配、
索引分配方法;2. 檔案空閒空間管理,可採用空白塊鏈、空白目錄、位示圖方法;
步驟如下:
1. 輸入磁碟基本資訊引數,計算位示圖大小,並隨機初始化位示圖;
(1)磁碟基本資訊:磁碟柱面數m, 每柱面磁軌數p, 每磁軌物理塊數q;
(2)假設採用整數陣列存放位示圖,則陣列大小為:
size= ceil((柱面數*每柱面磁軌數*每磁軌物理塊數)/(sizeof(int)*8))
(3)申請大小為size的整數陣列map,並對其進行隨機初始化。
例如:假設m=2, p=4, q=8, 共有64個磁碟塊, 若sizeof(int)=2, 則位示圖大小為4,map[4]如下:
位示圖中每一位對應的相對磁碟塊號如下圖,磁碟塊號由小到大對應於陣列的低位址到高位址位上。即map[0]的第0位到第15位分別對應0號磁碟塊到15號磁碟塊的狀態,map[1]的第0位到第15位對應16號磁碟塊到31號磁碟塊的狀態,以此類推。
如上表所示, 29號磁碟的狀態存在map[1]中,對應於第13位;
2. 輸出初始位示圖資訊;
3. 輸入檔案分配或釋放請求,
(1)格式:「+ 檔名申請塊數」 或 「 - 檔名 」
表示申請檔案分配,「-」表示刪除檔案
如: + f1 5
4. 根據請求完成相應操作。
(1)若為分配申請x個盤塊,則在位示圖中找到x個為0的位,將其修改為「1」,計算相應具體物理裝置的柱面號c、磁軌號h和物理塊號r,並將chr位址或相對磁碟塊號記錄在檔案目錄中。輸出位示圖修改位置、分配的磁碟塊chr位址、修改後的目錄和位示圖資訊。否則,空間不夠,退出執行下一條請求;
● 計算公式如下:
a. 已知位示圖中的下標i , j, 計算相對塊號
block= i*sizeof( int )*8+j
b. 已知相對塊號計算柱面、磁軌、物理塊號如下:
柱面號 c= 相對塊號/(每柱面磁軌數*每磁軌物理塊數)
磁軌號 h= 相對塊號%(每柱面磁軌數*每磁軌物理塊數)/ 每磁軌物理塊數
物理塊號 r= 相對塊號%每磁軌物理塊數
● 檔案目錄如下(以索引表分配為例):
(2)若為刪除申請,則從目錄中找到要刪除的檔案所在的目錄項,讀取索引表,依次讀
取檔案相應的盤塊chr位址, 計算該盤塊的相對磁碟塊號,再計算其相應資訊在位示圖中的位置( i,j),將位示圖中的相應位有「1」改為「0」, 並從目錄中刪除該目錄項。輸出刪除的磁碟塊chr位址、相應位示圖修改位置、修改過的位示圖和目錄。
計算過程如下:
相對磁碟塊號 = 柱面號*每柱面磁軌數*每磁軌物理塊數+
磁軌號*每磁軌物理塊數+ 物理塊號
i = 相對磁碟塊號/ (sizeof(int)*8)
j = 相對磁碟塊號% (sizeof(int)*8)
2. linux**分析
為了進一步了解作業系統核心,學習了linux作業系統的程序同步程式,主要程式源**如下:
#include "stdio.h"
#include
#include
#include
int physic[100]; //檔案位址緩衝區
int style=1; //檔案的型別
char cur_dir[10]="root"; //當前目錄
struct ***mand
cmd[13];
struct block
memory[20449];
struct block_super
super_block;
struct node //i結點資訊
i_node[640];
struct dir //目錄項資訊
root[640];
void format() //格式化
for(i=0;i<640;ii結點資訊初始化
i_node[i].file_length=-1; //檔案長度
i_node[i].file_style=-1; //檔案型別
} for(i=0;i<640;i根目錄區資訊初始化
for(i=0;i<20449;i儲存空間初始化
} for(i=0;i<20449;i++) //將空閒塊的資訊用成組鏈結的方法寫進每組的最後乙個塊中
儲存空間初始化
if((i+1)%50==0)
else
}memory[i].a=0; //標記為沒有使用
continue; //處理完用於儲存下一組盤塊資訊的特殊盤塊後,跳過本次迴圈
} for(j=0;j<50;j++)
memory[i].n=0;
} printf("已經初始化完畢\n");
printf("進入unix檔案模擬n\n");}
作業系統課程設計報告
上海電力學院 計算機作業系統原理 課程設計報告 題目名稱 編寫程式模擬虛擬儲存器管理 姓名 杜志豪 學號 20121798 班級 2012053班 同組姓名 孫嘉軼 課程設計時間 2014.6.30 2014.7.4 評語成績 一 設計內容及要求4 1.1 設計題目4 1 2 使用演算法分析4 1 ...
作業系統課程設計報告
作業系統 課程設計報告 姓名吳昊學號 20091811042 系別資訊管理與工程系 專業電腦科學與技術班級 09級 課程設計題目模擬檔案管理系統 指導教師崔新會 小組成員吳昊 丁強強 辛夢娟 王放 周洋 2012 年 6 月 11 日 目錄 內容摘要 2 第一章引言 2 第二章需求分析 4 第三章系...
作業系統課程設計報告
課程設計說明書 設計名稱 作業系統課程設計 題目 檔案訪問介面設計 學生姓名 陳小浪 專業 電腦科學與技術 班級 12級1班 學號 2012314118 指導教師 任朝暉 日期 2014 年 9 月 15 日 課程設計任務書 電腦科學與技術專業年級班 一 設計題目 檔案訪問介面設計 二 主要內容 利...