操作系统-文件系统存储空间管理.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
#includeiostream #includeiomanip using namespace std; int B = 1; int U = 100; typedef struct Black { int Bnum; int Bfirst; int Bleng; int Blast; }Black; typedef struct Use { char Ufile[8]; int Ufirst; int Uleng; int Ulast; int Uflg; }Use; Black black[] = {{0,0,100,99}}; // 初始化 Use use[100]= {0}; void bubbleSort(Black a[],int m) // 为了实现再次新建文件时提高分配利用率 (将空白快按空白个数从小到大排序 ) { for(int i = 0;im;i--) { for(int j = 0;im-1;j++) { if(a[j].Bfirsta[j+1].Bfirst) { Black temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; } } } } void PrintBlack() { int num =1; cout*** 当前的空文件目录表 endl; cout*** 序号 首块号 空白块个数 末块号 endl; for(int i = 0;iB;i++) { { { { { coutnumsetw(10)black[i].Bfirstsetw(10)black[i].Blengsetw(10)black[i].Blast endl; num++; } coutendl; } void PrintUse() { cout*** 当前的已使用文件目录 ***endl; cout 序号 首块号 空白块个数 末块号 endl; for(int i = 0;iU;i++) { if(use[i].Uflg==1) { coutuse[i].Ufilesetw(10)use[i].Ufirstsetw(10)use[i].Ulengsetw(10)use[i].Ula stendl; } } coutendl; } void Distribute() { cout 输入文件名和块数 endl; char fname[8]; // 文件名 int m; // 块数 int temp; // 记录要插入的首块号(空白区中的) int t= 1;// 为了遍历完空白表的验证非法的输入(块数大于空白区的所有块数) cinfnamem; for(int i = 0;iB;i++) { t++; for(int j = 0;jU;j++) { if(!strcmp(fname,use[j].Ufile)) { cout*** 此文件名已经存在 !请转换文件名 ***endl; return; } } if(black[i].Bleng=m) temp = black[i].Bfirst; if(black[i].Bleng == m)// 删除空白区 { { { { for(int i =0;iB-1;i++) { black[i].Bfirst = black[i+1].Bfirst; black[i].Bleng = black[i+1].Bleng; black[i].Blast = black[i+1].Blast; } B--; } else // 修改空白区 { black[i].Bleng-=m; black[i].Bfirst+=m; } strcpy(use[U].Ufile,fname); use[U].Ufirst=temp; use[U].Uleng=m; use[U].Ulast=use[U].Ufirst+use[U].Uleng-1; use[U].Uflg=1; U++; break; } else { if(t==B) endl;cout 由于 m 块数大于空闲区无法分配 endl; } } bubbleSort(black,B); PrintBlack(); PrintUse(); } void Release() { int flag = 0; // 标记输入的文件名是否存在 int ufirst; // 首块号 int uleng; // 文件块数 int ulast; // 文件末块 char fname[8]; cout 输入删除的文件的文件名 endl; cinfname; for(int i=0;iU;i++) { int flag =1; } } int fT = 0; int Tnum =0; int fB = 0; int Bnum

文档评论(0)

dongguiying + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档