使用linux环境下c语言编程位视图实现500行500列的实验分配和回收磁盘块.doc

使用linux环境下c语言编程位视图实现500行500列的实验分配和回收磁盘块.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:400-050-0739(电话支持时间:9:00-19:00)。
PAGE / NUMPAGES 使用Linux环境下C语言编程,实现随机数的产生和数组的初始化。具体的实例如下。 位示图方法模拟磁盘块的分配与回收。 题目的描述: 要求在LINUX环境用C语言编程 假设有一个500行500列的矩阵来表示磁盘块,状态位是1表示已经分配出去,状态位是0表示空闲块 给这个矩阵用随机函数初始化,让其布满0和1 写程序统计有多少个空闲块? 有一个程序文件要申请20个磁盘块,能否分配?如果可以分配,给出分配块的块号地址,块号=字号×500+位号,并修改位示图,块号从0开始编址。资料个人收集整理,勿做商业用途 要回收第300块和第580块,如何实现?给出位示图修改的程序 #include <stdio.h> #include <sys/time.h> #include <fcntl.h> #define row 500 #define col 500 unsigned int new_rand () {   int fd;   unsigned int n = 0;   fd = open ("/dev/urandom", O_RDONLY);   if (fd > 0)   {     read (fd, &n, sizeof (n));   }   close (fd);   return n; } int statistics_free(unsigned int wst[][]) { int sum_free=0;//记录空闲块个数,并初始化 int i_row=0; int i_col=0; for(;i_row<row;i_row++) for(i_col=0;i_col<col;i_col++) { if(wst[i_row][i_col]==0) sum_free++; } return sum_free; } int main () { int i_row=0; int i_col=0;//作为循环的变量 int recover_number=30;//要求释放的块号 int space=20;//申请的磁盘块 { unsigned int ticks;   struct timeval tv;   int fd;   gettimeofday (&tv, NULL);   ticks = tv.tv_sec + tv.tv_usec;   fd = open ("/dev/urandom", O_RDONLY);   if (fd > 0)     {       unsigned int r;       int i;       for (i = 0; i < 512; i++)         {           read (fd, &r, sizeof (r));           ticks += r;         }       close (fd);     }   srand (ticks); } unsigned int wst[row][col]; //初始化数组为0,1 for(;i_row<row;i_row++) { for(i_col=0;i_col<col;i_col++) { wst[i_row][i_col]=new_rand()%2; printf("%d ",wst[i_row][i_col]); } printf("\n"); } //统计空闲块个数 printf("There have free space:%d",statistics_free(wst));资料个人收集整理,勿做商业用途 //申请20个磁盘块,能否分配?如果可以分配,给出分配块的块号地址,块号=字号×500+位号,并修改 位示图,块号从0开始编址资料个人收集整理,勿做商业用途 { int i_row=0; int i_col=0; int t_row=0; int t_col=0; if(ask>statistics_free(wst)) { printf("The space don't enough"); return; } printf("The space address like this:\n"); for(;i_row<row;i_row++) for(i_col=0;i_col<col;i_col++) { int address=0; if(ask>0&&wst[i_row][i_col]==

文档评论(0)

177****5460
该用户很懒,什么也没介绍

相关文档

相关课程推荐