文件系统存储空间管理模拟实验报告Word文档下载推荐.docx

上传人:b****0 文档编号:13477372 上传时间:2022-10-11 格式:DOCX 页数:29 大小:104.74KB
下载 相关 举报
文件系统存储空间管理模拟实验报告Word文档下载推荐.docx_第1页
第1页 / 共29页
文件系统存储空间管理模拟实验报告Word文档下载推荐.docx_第2页
第2页 / 共29页
文件系统存储空间管理模拟实验报告Word文档下载推荐.docx_第3页
第3页 / 共29页
文件系统存储空间管理模拟实验报告Word文档下载推荐.docx_第4页
第4页 / 共29页
文件系统存储空间管理模拟实验报告Word文档下载推荐.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

文件系统存储空间管理模拟实验报告Word文档下载推荐.docx

《文件系统存储空间管理模拟实验报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《文件系统存储空间管理模拟实验报告Word文档下载推荐.docx(29页珍藏版)》请在冰豆网上搜索。

文件系统存储空间管理模拟实验报告Word文档下载推荐.docx

14

13

12

11

10

9

8

7

6

5

4

3

2

1

map[0]

map[1]

map[2]

map[3]

位示图中每一位对应的相对磁盘块号如下图,磁盘块号由小到大对应于数组的低地址到高地址位上。

即map[0]的第0位到第15位分别对应0号磁盘块到15号磁盘块的状态,map[1]的第0位到第15位对应16号磁盘块到31号磁盘块的状态,以此类推。

map[0]

map[1]

31

30

29

28

27

26

25

24

23

22

21

20

19

18

17

16

map[2]

47

46

45

44

43

42

41

40

39

38

37

36

35

34

33

32

map[3]

63

62

61

60

59

58

57

56

55

54

53

52

51

50

49

48

如上表所示,29号磁盘的状态存在map[1]中,对应于第13位;

2.输出初始位示图信息;

3.输入文件分配或释放请求,

(1)格式:

+文件名申请块数”或“-文件名”

+”表示申请文件分配,-”表示删除文件

如:

+F15

4.根据请求完成相应操作。

(1)若为分配申请x个盘块,则在位示图中找到x个为0的位,将其修改为

1”,计算相应具体物理设备的柱面号C、磁道号H和物理块号R,并将CHR地

址或相对磁盘块号记录在文件目录中。

输出位示图修改位置、分配的磁盘块CHR

地址、修改后的目录和位示图信息。

否则,空间不够,退出执行下一条请求;

计算公式如下:

a.已知位示图中的下标i,j,计算相对块号

Block=i*sizeof(int)*8+j

b.已知相对块号计算柱面、磁道、物理块号如下:

柱面号C=相对块号/(每柱面磁道数*每磁道物理块数)

磁道号H=相对块号%(每柱面磁道数*每磁道物理块数)/每磁道物理块数

物理块号R=相对块号%每磁道物理块数

文件目录如下(以索引表分配为例):

文件名

首个物理块CHR

块个数

索引表

beta

地址

(0,0,0)

(0,0,0)(0,0,1)

Alpha

(2,3,0)

Toyota

(4912)…

Sony

 

首个物理块地址

\,

(相对)

(0,2,3)…

(3,6,7)…

(8,9,12)…

(2)若为删除申请,则从目录中找到要删除的文件所在的目录项,读取索引表,依次读

取文件相应的盘块CHR地址,计算该盘块的相对磁盘块号,再计算其相应信息在位示图中的位置(i,j),将位示图中的相应位有“1”改为0”,并从目录中删除该目录项。

输出删除的磁盘块CHR地址、相应位示图修改位置、修改过的位示图

和目录。

计算过程如下:

相对磁盘块号=柱面号*每柱面磁道数*每磁道物理块数+磁道号*每磁道物理块数+物理块号

i=相对磁盘块号/(sizeof(int)*8)

j=相对磁盘块号%(sizeof(int)*8)

五、实验流程图

f=f+l

文flS-File存入系统'

S-File为支件名*M为申请块数

T

置空白区号f=l

N

诫后一个空口

坯次无法分配

区号

Y

保存空白区.首块号

空白匿f

<

的块数PM

*修改空闲目录表前首块号和块数

图一文件空闲区分配算法

円+1

请求剧除一牛文件释放空剧

齊卒白文件冃录表

丿崔屮块塹丿栏申當块吕=F

*r*

u

u+i)rd-ny?

'

仅有H邻

Fg中首块号+

j栏空白块牡十】

¥

有上郛

有上邻也有下郭

yE空口块數+日

空白文件中增加一豪H

0T块号寸

空甲块融-样

丿栏中首決号不变

/拦中寺白块曾+7+1)拦中

空向块ITT

丽陳/+[栏杀目

图二文件空闲区回收算法

六、实验代码

#include"

stdio.h"

#include<

stdlib.h>

#inelude<

conio.h>

string.h>

intphysic[100];

//文件地址缓冲区

intstyle=1;

//文件的类型

charcur_dir[10]="

root"

;

//当前目录structcommand

{charcom[10];

}cmd[13];

structblock

{intn;

//空闲的盘快的个数

intfree[50];

//存放空闲盘快的地址

inta;

//模拟盘快是否被占用

}memory[20449];

structblock_super

{intn;

//存放进入栈中的空闲块

intstack[50];

//存放下一组空闲盘快的地址

}super_block;

structnode//i结点信息

{intfile_style;

//i结点文件类型

intfile_length;

//i结点文件长度

intfile_address[100];

//i结点文件的物理地址

}i_node[640];

structdir//目录项信息

{charfile_name[10];

//文件名

inti_num;

//文件的结点号

chardir_name[10];

//文件所在的目录

}root[640];

voidformat。

//格式化

{inti,j,k;

super_block.n=50;

for(i=6i<

50;

i++)//超级块初始化

{super_block.free[i]=i;

super_block.stack[i]=50+i;

//存放下一组的盘块

}-

for(i=0;

i<

640;

i++)//i结点信息初始化

{for(j=0;

j<

100;

j++)

{i_node[i].file_address[j]=-1;

//文件地址

}--

i_node[i].file_length=-1;

//文件长度i_node[i].file_style=-1;

//文件类型

i++)//根目录区信息初始化

{strcpy(root[i].file_name,"

"

);

root[i].i_num=-1;

strcpy(root[i].dir_name,"

}-

20449;

i++)//存储空间初始化

{memory"

].n=0;

//必须有这个

memory[i].a=0;

for(j=0;

{memory[i].free[j]=-1;

}

i++)//将空闲块的信息用成组链接的方法写进每组的最后一个块中

{//存储空间初始化

if((i+1)%50==0)

{k=i+1;

{if(k<

20450)

{memory[i].free[j]=k;

〃下一组空闲地址

memory"

].n++;

//下一组空闲个数注意在memory"

].n++之前要给其赋初值

k++;

else

//标记为没有使用

continue;

//处理完用于存储下一组盘块信息的特殊盘块后,跳过本次循环

memory[i].n=0;

printf(”已经初始化完毕\n”);

printf(”进入UNIX文件模拟\n\n"

voidwrite_file(FILE*fp)//将信息读入系统文件中

{inti;

fp=fopen("

system"

"

wb"

i++)

{fwrite(&

memory[i],sizeof(structblock),1,fp);

fwrite(&

super_block,sizeof(structblock_super),1,fp);

{write(&

i_node[i],sizeof(structnode),1,fp);

i

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 中国风

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1