位示图方法模拟磁盘块的分配与回收

位示图方法模拟磁盘块的分配与回收

ID:47044304

大小:39.01 KB

页数:9页

时间:2019-07-07

位示图方法模拟磁盘块的分配与回收_第1页
位示图方法模拟磁盘块的分配与回收_第2页
位示图方法模拟磁盘块的分配与回收_第3页
位示图方法模拟磁盘块的分配与回收_第4页
位示图方法模拟磁盘块的分配与回收_第5页
资源描述:

《位示图方法模拟磁盘块的分配与回收》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、位示图方法模拟磁盘块的分配与回收题目的描述:1.要求在LINUX环境用C语言编程2.假设有一个500行500列的矩阵来表示磁盘块,状态位是1表示已经分配出去,状态位是0表示空闲块3.给这个矩阵用随机函数初始化,让其布满0和14.写程序统计有多少个空闲块?5.有一个程序文件要申请20个磁盘块,能否分配?如果可以分配,给出分配块的块号地址,块号=字号×500+位号,并修改位示图,块号从0开始编址。6.要回收第300块和第580块,如何实现?给出位示图修改的程序在linux系统中,我想很多的朋友使用的是虚拟机,这样的话,当我们将行和列都设置为500x500的话,操作就不是

2、很方便了,所以呢,小Q就将其修改为10X10的来演示就好了,其中的算法和思想是完全相同的。另外一点,必须声明,在linux中使用vi编辑器进行C语言的编程,其中是不允许含有中文的,即使是中文的注释也不行。为了,朋友们好理解,我再这里写注释的时候使用的是中文的注释,但是你在使用的时候一定要记住不能将其放入到linux环境下的vi编辑器中。好了,我想建立文件什么的我就不用讲了,下面看下,如何解决上述的问题吧,就算是抛砖引玉吧。/*使用变量:row表示行,col表示列*/#include#include#include

3、.h>#definerow10#definecol10voidinit_random(){ unsignedintticks; structtimevaltv; intfd; gettimeofday(&tv,NULL); ticks=tv.tv_sec+tv.tv_usec; fd=open("/dev/urandom",O_RDONLY); if(fd>0)   {     unsignedintr;     inti;     for(i=0;i<512;i++)       {         read(fd,&r,sizeof(r));         t

4、icks+=r;       }     close(fd);   } srand(ticks); //printf("initfinished");}unsignedintnew_rand(){ intfd; unsignedintn=0; fd=open("/dev/urandom",O_RDONLY); if(fd>0) {   read(fd,&n,sizeof(n)); } close(fd); returnn;}intstatistics_free(unsignedintwst[][]){intsum_free=0;//记录空闲块个数,并初始化inti_

5、row=0;inti_col=0;for(;i_rowstatistics_free(wst)){printf("Thespacedon'tenough");return;}printf("The

6、spaceaddresslikethis:");for(;i_row0&&wst[i_row][i_col]==0){wst[i_row][i_col]=1;ask--;//计算当前的分配块号的地址address=i_row*row+i_col;printf("%d",address);}elseif(ask==0){printf("Theaskhadrequest,thearrayischanged:");for(t_row=

7、0;t_rowrow-1){printf("Yourasktofreespacedo

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。