实验六文件存储空间管理模拟--位示图[实验目的]通过一个简单的基于位示图的文件存储空间管理模拟算法的设计,加深理解文件系统的外存分配管理原理[实验学时]4学时[实验类型]综合性[实验内容] 设计一个 m 行 n 列(自定)二维数组表示位示图结构,利用初始化操作模拟给出位示图的原始状态或者某一时刻的当前状态,设计算法:1)完成给某文件分配几个盘块的过程(返回分配的盘块号并修改位示图);2)完成某磁盘块的回收过程(根据要回收的盘块号求解出对应位示图位置并修改位示图。注意:1 可以以某文件为单位分配、回收,或者以某个磁盘块为单位分配、回收2. 可以自行选择实行连续分配或者离散分配方式,3. 要求程序对不合法的条件或输入能给予恰当的处理。[实验参考代码]略 (这么简单,自己写吧)/** *@author:飞小飞* *@date:2025 年 11 月 23 日 10:33* *@目的:1 配与回收,在本程序中位示图 i = 0, j = 0, b = 0;开始* 采纳连续存储分配方式* *功能实现:1.分配空间给文件 2.回收文件的空间 3.查看所有文件存储信息* *联系作者:1511225190@qq.com*/#include #include #include #include using namespace std;int map[100][100];typedef struct file{charfileName[30]; /* 文件名字 */intlength; /* 文件长度 */intstart; /* 文件存储时 的初始位置 */}file;fileFile[60];intline, column; /* 行 列 */intfileTotalNum = 0; /* 总文件数 *//** *函数名:mapInit()* *描述: 对位示图进行初始化* *参数: 无* *返回值: 无**/void mapInit(){int i, j;printf( "请输入行和列:" );scanf( "%d%d", &line, &column );for ( i = 0; i < line; i++ ){for ( j = 0; j < column; j++ ){map[i][j] = 0;printf( "%3d", map[i][j] );}printf( "\n" );}}/** *函数名:allocation(int fileNum)* *描述: 分配空间给文件,采纳连续分配方式* *参数: fileNum 第几个文件* *返回值: 无**/void allocation( int fileNum ){intlength = File[fileNum].length;intb[60];inti, j;intx = 0;for ( i = 0; i < line; i++ ){for ( j = 0; j < column; j++ ){if ( map[i][j] == 0 ){b[x] = i * line + j;x++;if ( x == length )break; /* 这个 break ,跳...