作業系統課程設計報告 11

2021-03-14 13:28:07 字數 2871 閱讀 4521

哈爾濱理工大學

課程設計

(計算機作業系統)

題目:  檔案系統儲存空間管理

班級:姓名:

指導教師:

系主任:

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 日 課程設計任務書 電腦科學與技術專業年級班 一 設計題目 檔案訪問介面設計 二 主要內容 利...