模拟文件存储空间的管理采用空白文件目录法和空白块链法实施空间分配

上传人:沈*** 文档编号:124432663 上传时间:2022-07-25 格式:DOC 页数:15 大小:927.50KB
收藏 版权申诉 举报 下载
模拟文件存储空间的管理采用空白文件目录法和空白块链法实施空间分配_第1页
第1页 / 共15页
模拟文件存储空间的管理采用空白文件目录法和空白块链法实施空间分配_第2页
第2页 / 共15页
模拟文件存储空间的管理采用空白文件目录法和空白块链法实施空间分配_第3页
第3页 / 共15页
资源描述:

《模拟文件存储空间的管理采用空白文件目录法和空白块链法实施空间分配》由会员分享,可在线阅读,更多相关《模拟文件存储空间的管理采用空白文件目录法和空白块链法实施空间分配(15页珍藏版)》请在装配图网上搜索。

1、 实验报告课程名称 操作系统原理 实验名称 文件管理 姓 名 学号 专业班级 实验日期 成 绩 指导教师 赵安科 (实验目的实验原理主要仪器设备实验内容与步骤实验数据记录与处理实验结果与分析问题建议)实验三 文件管理模拟文件存储空间管理1内容:模拟文件存储空间的管理,采用空白文件目录法和空白块链法实施空间分配。2思想:文件存储空间管理是文件系统的重要内容。常用的管理思想有空白文件目录法、空白块链法和位示图法。本实验采用前两种方法进行空间分配。(1)空白文件目录法进行空间分配时,需要建立相关的数据结构,记录目前空白区域和已使用区域,假设开始时全部区域空闲。当有文件需要存储时,先检查空白文件目录,

2、找到适合区域立即分配,并修改空白文件目录表和已使用区域分配表。为此需建立两张表格,分别记录相关数据。空白文件目录表(初始)序号首空白块号空白快个数物理块号备注101000,1,2,98,99空白文件目录(中间)序号首空白块号空白块个数物理块号标志1242,3,4,5未分配2939,10,11未分配325525,26,27,28,29未分配439239,40未分配5未分配文件标识首块号文件块个数状态备注beta02占用Alpha63占用Toyota1213占用Sony309占用Ford504占用已使用区域表(中间)上述两张表的数据在系统运行中是发生变化的。文件空闲区分配和释放算法如下图所示:图一

3、 文件空闲区分配算法图二 文件空闲区回收算法(2)空白块链法进行空间分配时,需要建立链表数据结构,将空闲块按顺序加以组织,分配和回收时在链首完成,同时建立文件目录,记录文件占用空间情况。文件标识首块号备注Beta0Alpha6Toyota12Sony30Ford503要求:(1)自拟模拟数据演示运行结果(假定系统可用空闲块数为100)。为便于检查,建立和删除文件顺序如下:分配文件:F1,3分配文件:F2,5分配文件:F3,3分配文件:F4,8分配文件:F5,4分配文件:F6,2删除文件:F1删除文件:F2分配文件:F7,6删除文件:F3分配文件:F8,4删除文件:F5分配文件:F9,4每完成一

4、个文件的分配和删除后,显示空白文件目录当前内容。(2)空白文件目录法必须完成,空白块链法选做。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 Ufile8; int Ufirst;

5、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#当前的空文件目录表#endl;cout序号 首

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

7、ndl;void Distribute()cout输入文件名和块数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; blacki.Blast=blacki+1.Blast; B-;else /修改空白区black

8、i.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) /当遍历完整个空白表而且不存在小于m的空白区 cout由于m块数大于空闲区无法分配endl;bubbleSort(black,B); PrintBlack(); PrintUse();void Release()int flag=0 ; /标记输入的文件名是否存在int ufirst;

9、/首块号int uleng; /文件快数int ulast; /文件末块 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.Ufirst; uleng=usei.Uleng; usei.Uflg =-1; for(int j=0;jB;j+) /遍历判断上下邻 if(blackj.Blast+1

10、)=ufirst) fT=1; /存在上邻 Tnum=j; if(blackj.Bfirst-1)=ulast) fB=1; /存在下邻 Bnum=j; if(fT&(!fB) /有上邻,无下邻 blackTnum.Bleng+=uleng; blackTnum.Blast=ulast; if(fT&fB) /有上邻,有下邻 blackTnum.Bleng+=(uleng+blackBnum.Bleng); blackTnum.Blast=blackBnum.Blast; for(;BnumB;Bnum+) blackBnum=blackBnum+1; blackBnum.Bnum=Bnum+

11、1; B-; if(!fT)&(!fB) /无上邻,无下邻 blackB.Bnum=B; blackB.Bfirst=ufirst; blackB.Bleng=uleng; blackB.Blast=ulast; B+; if(!fT)&fB) /无上邻,有下邻 blackBnum.Bleng+=uleng; blackBnum.Bfirst=ufirst; if(flag=0) cout!输入文件不存在!endl; bubbleSort(black,B); PrintBlack(); PrintUse();void main()cout*模拟文件存储空白文件目录*endlendl; PrintBlack(); PrintUse(); int n; while(1) cout*endlendl; coutn;system( cls ); if(n=1) Distribute(); else if(n=2) Release(); else if(n=3) return; else cout重新输入endl; (部分略) 删除 f1:删除 f3: 分配:f8 4:

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!