欢迎来到天天文库
浏览记录
ID:34006845
大小:97.17 KB
页数:6页
时间:2019-03-03
《位示图管理磁盘存储空间用位示图管理磁盘存储空间用位示图管理磁盘存储空间用位示图管》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、用位示图管理磁盘存储空间一、实习内容模拟磁盘空闲空间的表示方法,以及模拟实现磁盘空间的分配和冋收。二、实习目的磁盘初始化时把磁盘存储空间分成许多块(扇区),这些空间可以被多个用户共享。用户作业在执行期间常常要在磁盘上建立文件或把己经建立在磁盘上的文件删去,这就涉及到磁盘存储空间的分配和回收。一个文件存放到磁盘上,可以组织成顺序文件(连续文件)、链接文件(串联文件)、索引文件等,因此,磁盘存储空间的分配有两种方式,一种是分配连续的存储空间,另一种是可以分配不连续的存储空间。怎样有效地管理磁盘存储空间是操作系统应解决的一个重耍问题,通过本实习使学生掌握磁盘存储空间的分配和回收算法
2、。三、实验分析连续的磁盘存储空间的分配和冋收。四、算法及说明(1)为了提高磁盘存储空间的利用率,可在磁盘上组织成链接文件、索引文件,这类文件可以把逻辑记录存放在不连续的存储空间。为了表示哪些磁盘空间己被占用,哪些磁盘空间是空闲的,可用位示图来指出。位示图由若干字节构成,每一位与磁盘上的一块对应,“1”状态表示相应块已占用,“0”状态表示该块为空闲。(2)申请一块磁盘空间时,由分配程序查位示图,找出一个为“0”的位,计算岀这一位对应块的磁盘物理地址,且把该位置成占用状态“1”。假设现在有一个盘组共8个柱面,每个柱面有2个磁道(盘面),每个磁道分成4个物理记录。那么,当在位示图中
3、找到某一字节的某一位为“0”吋,这个空闲块对应的磁盘物理地址为:柱面号二字节号磁道号二位数/4物理记录号二位数%4(3)归还一块磁盘空间吋,由冋收程序根据归还的磁盘物理地址计算出归还块在位示图中的对应位,把该位置成“0”。按照(2)中假设的盘组,归还块在位示图中的位置计算如下:字节号二柱面号位数二磁道号X4+物理记录号五、用到的数据结构及模块说明intarea⑻⑻;表示位示图,每一位与磁盘上的一块对应,“1”状态表示相应块已占用,“0”状态表示该块为空闲。intapply(){intij,need,num=O;printf(”请输入需要分配的硬盘大小(以块为单位,不超过6
4、4块):”);scanf(n%dn,&need);for(i=0;i<8;i++)for(j=0;j<8;j++)if((areafi][j])=O)num++;}if(need5、jJ==O){area[i]fjl=l;printf(”第%<1柱面第%4磁道第%4块物理纪录”,i,j/4,j%4);need—;}}}return0;}elseprintf(6、u分配失败,硬盘空间不够!“);}apply。模块的功能为分配外存。首先查找位示图,看是否磁盘空间够。如果够,则将空闲的块分配,分配的磁盘物理地址如下转化:柱面号二字节号,磁道号二位数/4,物理记录号二位数%4ovoidreclaimO{intiJ,cylinder,track,record;printf("请输入需要回收的物理地址”);printf(n柱面号(0〜7):”);scanf(u%d",&cylinder);printf(”磁道号(0〜1):”);scanf(u%d'&track);printf(H物理记录号(0~3):”);scanf("%d'&7、record);i=cylinder;j=track*4+record;area[i][j]=O;printf(u回收成功!n);printf("lH]收的是第咖字节,第%€1位”,i,j);}reclaimOtl块的功能是冋收外存。归还块在位示图中的位置如下转化:字节号二柱面号,位数=磁道号X4+物理记录号。voidview(){磁盘存储位示图”);printf(ninti,j;for(i=0;i<8;i++){for(j=0;j<8;j++){printf(ut%dH,area[i][j]);}printf(un);}printfC'XnXn");}8、view()模块的功能是查看磁盘存储位示图。主函数为:main(){intij,choice;for(i=0;i<8;i++)for(j=0;j<8;j++){area[i][j]=O;}}while(l)printf("printf(Hprintf("printfC*printf("""请选择功能项AAAAH);1■■分配外存”);2••回收外存”);3-查看位示图”);4一退出『);printfC*选择项(l-4):n);choice二getch();printf("%c
5、jJ==O){area[i]fjl=l;printf(”第%<1柱面第%4磁道第%4块物理纪录”,i,j/4,j%4);need—;}}}return0;}elseprintf(
6、u分配失败,硬盘空间不够!“);}apply。模块的功能为分配外存。首先查找位示图,看是否磁盘空间够。如果够,则将空闲的块分配,分配的磁盘物理地址如下转化:柱面号二字节号,磁道号二位数/4,物理记录号二位数%4ovoidreclaimO{intiJ,cylinder,track,record;printf("请输入需要回收的物理地址”);printf(n柱面号(0〜7):”);scanf(u%d",&cylinder);printf(”磁道号(0〜1):”);scanf(u%d'&track);printf(H物理记录号(0~3):”);scanf("%d'&
7、record);i=cylinder;j=track*4+record;area[i][j]=O;printf(u回收成功!n);printf("lH]收的是第咖字节,第%€1位”,i,j);}reclaimOtl块的功能是冋收外存。归还块在位示图中的位置如下转化:字节号二柱面号,位数=磁道号X4+物理记录号。voidview(){磁盘存储位示图”);printf(ninti,j;for(i=0;i<8;i++){for(j=0;j<8;j++){printf(ut%dH,area[i][j]);}printf(un);}printfC'XnXn");}
8、view()模块的功能是查看磁盘存储位示图。主函数为:main(){intij,choice;for(i=0;i<8;i++)for(j=0;j<8;j++){area[i][j]=O;}}while(l)printf("printf(Hprintf("printfC*printf("""请选择功能项AAAAH);1■■分配外存”);2••回收外存”);3-查看位示图”);4一退出『);printfC*选择项(l-4):n);choice二getch();printf("%c
此文档下载收益归作者所有