模拟UNIX系统成组链接法 实现磁盘存储空间的管理.doc
上传人:sy****28 上传时间:2024-09-13 格式:DOC 页数:5 大小:20KB 金币:14 举报 版权申诉
预览加载中,请您耐心等待几秒...

模拟UNIX系统成组链接法 实现磁盘存储空间的管理.doc

模拟UNIX系统成组链接法实现磁盘存储空间的管理.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

14 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

模拟UNIX系统成组链接法实现磁盘存储空间的管理-课程设计模拟UNIX系统成组链接法实现磁盘存储空间的管理|精品课程网站设计|课程设计网报告总结心得要求:模拟UNIX系统的空闲块成组链接法,实现磁盘存储空间的管理。[提示]:(1)假定磁盘存储空间已被划分成长度为n的等长块,共有M块可供使用。UNIX系统中采用空闲块成组链接的方法来管理磁盘存储空间,将磁盘中的每N个空闲块(NintMA;/*空闲块数组*/intA={{3,1,2,3},{3,4,5,6},{0,0,0,0},{0,0,0,0},{3,0,7,8},{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}};/*磁盘空间*/intmark;/*存放已分配的块*/intNo=0;/*已分配的块数*/voiddisplay1(){inti,j,temp,count;No=0;if(MA!=0){i=MA[0];printf("\ngroup1:");for(j=1;j0){printf("%d",A[temp][j]);mark[++No]=A[temp][j];}}else{i=MA[0];if(i==1)printf("\nTheblocksareallassigned");else{printf("\ngroup1:");for(j=2;j1)/*若该组不止一个空闲块*/{i=MA[0];s=MA[i];MA[0]--;printf("\nnumberoftheblock:%d",s);}elseif(MA[0]==1)/*只剩一个空闲块*/{if(MA!=0)/*还有其它空闲块组*/{s=MA;for(i=0;i<=3;i++)A[0][i]=A[s][i];MA[0]--;printf("\nnumberoftheblock:%d",s);}else/*没有其它空闲块组*/{printf("\nThereisn''tanyspace");return;}}else/*当前组已分配完*/{for(i=0;i<=3;i++)MA[i]=A[0][i];assign();}display();/*显示分组情况*/}voidcallback()/*回收空闲块*/{inti,j,temp;printf("\ninputtheNo.oftheblockyouwanttocallback:");scanf("%d",&j);getchar();/*得到待回收的空闲块号*/for(temp=1;temp<=No;temp++){if(mark[temp]==j)break;}if(temp<No+1)/*若该空闲块已在,退出*/{printf("\nTheblockisinthedisk");return;}if(MA[0]<3)/*当前组不满3块*/{i=MA[0];MA[i+1]=j;MA[0]++;}else/*已有3块*/{for(i=0;i<=3;i++)A[j][i]=MA[i];MA[0]=1;MA=j;}display();/*显示*/}voidmenu()/*功能选择函数*/{intchoice;charjudge;printf("\ninputyourchoice:(1--assign,2--callback):");scanf("%d",&choice);getchar();if(choice==1)assign();elseif(choice==2)callback();elseprintf("\ninvalidcommand!");printf("\ncontinueornot?(y--Yes,n--Not):");scanf("%c",&judge);getchar();if(judge==''y'')menu();else{printf("\nNowthegraphis:");display();printf("\npressanykeytoquit");getch();}}main(){inti;for(i=0;i<=3;i++)MA[i]=A[0][i];display();menu();}