文件管理模拟文件存储空间管理采用空白文件目录法(共13页)_第1页
文件管理模拟文件存储空间管理采用空白文件目录法(共13页)_第2页
文件管理模拟文件存储空间管理采用空白文件目录法(共13页)_第3页
文件管理模拟文件存储空间管理采用空白文件目录法(共13页)_第4页
文件管理模拟文件存储空间管理采用空白文件目录法(共13页)_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 实 验 报 告 课程名称 操作系统(co zu x tn) 实验(shyn)名称 文件(wnjin)管理 班 级 计科1203 学 号 201207010321 姓 名 马万里 指导教师 赵安科 实验日期 2015.6.19 成 绩 模拟文件(wnjin)存储空间管理一内容(nirng):模拟文件存储空间的管理(gunl),采用空白文件目录法和空白块链法实施空间分配。二思想:图一 文件空闲区分配算法图二 文件空闲(kngxin)区回收算法三要求(yoqi):(1)自拟模拟数据演示(ynsh)运行结果(假定系统可用空闲块数为100)。为便于检查,建立和删除文件顺序如下 分配文件:F1,3 分配

2、文件:F2,5 分配文件:F3,3 分配文件:F4,8分配文件:F5,4 分配文件:F6,2 删除文件:F1 删除文件:F2分配(fnpi)文件:F7,6 删除(shnch)文件:F3 分配(fnpi)文件:F8,4 删除文件:F5 分配文件:F9,4四主要源代码#include #include using namespace std;int B= 1; /空白序号int U= 100; /文件标示序号typedef struct _Black int Bnum; int Bfirst; int Bleng; int Blast;Black;typedef struct _Usechar U

3、file8; int Ufirst; int Uleng; int Ulast; int Uflg;Use;Black black=0,0,100,99; /初始化Use use100=;void bubbleSort(Black a,int m) /为了实现再次新建文件时提高分配利用率(将空白块按空白个数由从小到排序) for (int i = 0; i m - 1; i+) for (int j = 0; j aj+1.Bfirst ) Black temp = aj; aj = aj+1; aj+1 = temp; void PrintBlack()int num=1;cout#当前(d

4、ngqin)的空文件目录表#endl;cout序号 首块号 空白(kngbi)块个数 末块号endl;for(int i=0;iB;i+)coutnumsetw(10)blacki.Bfirstsetw(10)blacki.Blengsetw(10)blacki.Blastendl;num+;coutendl;void PrintUse()cout#当前(dngqin)的已使用文件目录#endl;cout文件名 首块号 空白块个数 末块号endl;for(int i=0;iU;i+) if(usei.Uflg =1) coutusei.Ufilesetw(10)usei.Ufirstsetw(

5、10)usei.Ulengsetw(10)usei.Ulastendl; coutendl;void Distribute()cout输入(shr)文件名和块数fnamem;for(int i= 0;iB;i+)t+;for(int j=0; jU; j+)if(!strcmp(fname,usej.Ufile)cout!此文件名已经存在!请换文件名!=m)temp=blacki.Bfirst;if(blacki.Bleng=m) /删除空白区for(;iB-1;i+) blacki.Bfirst= blacki+1.Bfirst; blacki.Bleng=blacki+1.Bleng; b

6、lacki.Blast=blacki+1.Blast; B-;else /修改(xigi)空白区blacki.Bleng -=m;blacki.Bfirst +=m;strcpy(useU.Ufile ,fname);useU.Ufirst=temp;useU.Uleng=m;useU.Ulast=useU.Ufirst+useU.Uleng-1;useU.Uflg=1;U+;break;else if(t=B) /当遍历(bin l)完整个空白表而且不存在小于m的空白区 cout由于m块数大于空闲区无法(wf)分配endl;bubbleSort(black,B); PrintBlack();

7、 PrintUse();void Release()int flag=0 ; /标记输入的文件名是否(sh fu)存在int ufirst; /首块号int uleng; /文件(wnjin)快数int ulast; /文件(wnjin)末块 char fname8; cout输入删除文件的文件名fname; for(int i=0;iU;i+) if(!strcmp(fname,usei.Ufile) flag =1; int fT=0; /上邻标记 int Tnum=0; int fB=0; /下邻标记 int Bnum=0; ulast=usei.Ulast; ufirst=usei.U

8、first; uleng=usei.Uleng; usei.Uflg =-1; for(int j=0;jB;j+) /遍历判断上下邻 if(blackj.Blast+1)=ufirst) fT=1; /存在(cnzi)上邻 Tnum=j; if(blackj.Bfirst-1)=ulast) fB=1; /存在(cnzi)下邻 Bnum=j; if(fT&(!fB) /有上邻,无下(w xi)邻 blackTnum.Bleng+=uleng; blackTnum.Blast=ulast; if(fT&fB) /有上邻,有下邻 blackTnum.Bleng+=(uleng+blackBnum

9、.Bleng); blackTnum.Blast=blackBnum.Blast; for(;BnumB;Bnum+) blackBnum=blackBnum+1; blackBnum.Bnum=Bnum+1; B-; if(!fT)&(!fB) /无上邻,无下邻 blackB.Bnum=B; blackB.Bfirst=ufirst; blackB.Bleng=uleng; blackB.Blast=ulast; B+; if(!fT)&fB) /无上(wshng)邻,有下邻 blackBnum.Bleng+=uleng; blackBnum.Bfirst=ufirst; if(flag=0) cout!输入(shr)文件不存在!endl; bubbleSort(black,B); PrintBlack(); PrintUse();void main()cout*模拟文件(wnjin)存储空白文件目录*endlendl; PrintBlack(); PrintUse(); int n; while(1) cout*endlend

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论