课程名称 计算机操作系统 实验名称 文件系统存储空间管理模拟 姓 名 学 号 专业班级 实验日期 成 绩 指导老师 一、实验目的
根据提出的文件分配和释放请求,动态显示磁盘空闲空间的
态以及文件目录的变化,以位示图和索引分配为例:每次执行请求后要求显示或打印位示图的修改位置、分配和回收磁盘的物理块地址、更新的位示图、目录。
二、实验原理
用数组表示位示图,其中的每一位对应磁盘一个物理块的状态,0表示、空闲,1表示分配;当请求分配一个磁盘块时,寻找到数组中为0的位,计算相对磁盘块号,并计算其在磁盘中的物理地址(柱面号、磁道号、物理块号),并将其状态由0变到1。当释放某一物理块时,已知其在磁盘中的物理地址,计算其相对磁盘块号,再找到位示图数组中的相应位,将其状态由1变为0。
三、主要仪器设备 PC机(含有VC) 四、实验内容与步骤
实验内容: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] map[1] map[2] map[3] 15 0 1 1 14 0 0 0 0 13 1 1 1 0 12 1 0 1 0 11 0 1 0 1 10 1 1 0 0 9 0 0 1 0 8 0 0 1 0 7 1 0 1 0 6 1 0 0 1 5 0 1 0 1 4 0 1 1 0 3 1 0 1 0 2 0 0 0 1 1 1 0 0 1 0 0 0 1 0 位示图中每一位对应的相对磁盘块号如下图,磁盘块号由小到大对应于数组的低地址到高地址位上。即map[0]的第0位到第15位分别对应0号磁盘块到15号磁盘块的状态,map[1]的第0位到第15位对应16号磁盘块到31号磁盘块的状态,以此类推。 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 map[0] 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 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)格式:“+ 文件名 申请块数” 或 “ - 文件名 ” “+”表示申请文件分配,“-”表示删除文件 如: + 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= 相对块号%每磁道物理块数 ? 文件目录如下(以索引表分配为例): 首个物理块CHR文件名 块个数 索引表 地址 beta (0,0,0) 2 (0,0,0)(0,0,1) Alpha Toyota Sony
文件名 beta Alpha Toyota 首个物理块地址(相对) 0 3 8 块个数 2 3 3 索引表 (0,2,3)? (3,6,7)? (8, 9,12)? (2,3,0) 4 3 3 (2,3,0) (4 9 12)… ( (2)若为删除申请,则从目录中找到要删除的文件所在的目录项,读取索引表,依次读
取文件相应的盘块CHR地址, 计算该盘块的相对磁盘块号,再计算其相应信息在位示图中的位置( i,j),将位示图中的相应位有“1”改为“0”, 并从目录中删除该目录项。输出删除的磁盘块CHR地址、相应位示图修改位置、修改过的位示图和目录。
计算过程如下:
相对磁盘块号 = 柱面号*每柱面磁道数*每磁道物理块数+
磁道号*每磁道物理块数+ 物理块号
i = 相对磁盘块号/ (sizeof(int)*8) j = 相对磁盘块号% (sizeof(int)*8)
五、实验流程图
图一 文件空闲区分配算法
图二 文件空闲区回收算法
相关推荐: