2022年西安石油大学操作系统实验三文件管理 .pdf

上传人:H****o 文档编号:32999582 上传时间:2022-08-09 格式:PDF 页数:11 大小:418.62KB
返回 下载 相关 举报
2022年西安石油大学操作系统实验三文件管理 .pdf_第1页
第1页 / 共11页
2022年西安石油大学操作系统实验三文件管理 .pdf_第2页
第2页 / 共11页
点击查看更多>>
资源描述

《2022年西安石油大学操作系统实验三文件管理 .pdf》由会员分享,可在线阅读,更多相关《2022年西安石油大学操作系统实验三文件管理 .pdf(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、一实验题目1内容: 模拟文件存储空间的管理,采用空白文件目录法和空白块链法实施空间分配。2思想 :文件存储空间管理是文件系统的重要内容。常用的管理思想有空白文件目录法、空白块链法和位示图法。本实验采用前两种方法进行空间分配。(1)空白文件目录法进行空间分配时,需要建立相关的数据结构,记录目前空白区域和已使用区域,假设开始时全部区域空闲。当有文件需要存储时,先检查空白文件目录,找到适合区域立即分配,并修改空白文件目录表和已使用区域分配表。为此需建立两张表格,分别记录相关数据。空白文件目录表(初始)空白文件目录(中间)已使用区域表(中间)上述两张表的数据在系统运行中是发生变化的。文件空闲区分配和释

2、放算法如下图所示:序号首空白块号空白块个数物理块号备注1 0 100 0,1,2, ,98,99 序号首空白块号空白块个数物理块号标志1 2 4 2,3,4,5 未分配2 9 3 9,10,11 未分配3 25 5 25,26,27,28,29 未分配4 39 2 39,40 未分配5 未分配文件标识首块号文件块个数状态备注beta 0 2 占用Alpha 6 3 占用Toyota 12 13 占用Sony 30 9 占用Ford 50 4 占用名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - -

3、 - 第 1 页,共 11 页 - - - - - - - - - (2)空白块链法进行空间分配时,需要建立链表数据结构,将空闲块按顺序加以组织,分配和回收时在链首完成,同时建立文件目录,记录文件占用空间情况。二程序中所用的数据结构及说明(1)typedef struct _Black int Bnum; int Bfirst; int Bleng; int Blast; Black; (当前的空文件目录结构体)Black black=0,0,100,99; (结构体初始化)(2)typedef struct _Use char Ufile8; int Ufirst; int Uleng; i

4、nt Ulast; int Uflg; Use; (当前已使用文件目录初始化)Use use100=0; (结构体初始化)三源程序并附上必要的说明#include #include using namespace std; 文件标识首块号备注beta 0 Alpha 6 Toyota 12 Sony 30 Ford 50 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 11 页 - - - - - - - - - int B= 1; /空白序号int U= 100; /文

5、件标示序号typedef struct _Black int Bnum; int Bfirst; int Bleng; int Blast; Black; typedef struct _Use char Ufile8; int Ufirst; int Uleng; int Ulast; int Uflg; Use; Black black=0,0,100,99; /初始化Use use100=0; void bubbleSort(Black a,int m) / 为了实现再次新建文件时提高分配利用率( 将空白块按空白个数由从小到排序) for (int i = 0; i m - 1; i+)

6、 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 序号首块号空白块个数末块号 endl; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 11 页 - - - - - - - - - for(int i=0;iB;i+) coutnumsetw(10)blacki.B

7、firstsetw(10)blacki.Bleng setw(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.Uleng setw(10)usei.Ulastendl; coutendl; void Distribute() cout 输入文件名和块数 fnamem; for(in

8、t i= 0;iB;i+) t+; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 11 页 - - - - - - - - - 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.

9、Bleng=blacki+1.Bleng; blacki.Blast=blacki+1.Blast; B-; else /修改空白区 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; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - -

10、- 第 5 页,共 11 页 - - - - - - - - - else if(t=B) /当遍历完整个空白表而且不存在小于m的空白区cout 由于 m块数大于空闲区无法分配endl; bubbleSort(black,B); PrintBlack(); PrintUse(); void Release() int flag=0 ; /标记输入的文件名是否存在int ufirst; /首块号int uleng; /文件快数int ulast; /文件末块char fname8; cout 输入删除文件的文件名 fname; for(int i=0;iU;i+) if(!strcmp(fnam

11、e,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; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 11 页 - - - - - - - - - for(int j=0;jB;j+) /遍历判断上下邻 if(blackj.Bla

12、st+1)=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=Bn

13、um+1; B-; if(!fT)&(!fB) /无上邻,无下邻 blackB.Bnum=B; blackB.Bfirst=ufirst; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 11 页 - - - - - - - - - blackB.Bleng=uleng; blackB.Blast=ulast; B+; if(!fT)&fB) /无上邻,有下邻 blackBnum.Bleng+=uleng; blackBnum.Bfirst=ufirst; if(flag

14、=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) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 11 页 - - - - - - -

15、- - Distribute(); else if(n=2) Release(); else if(n=3) return; else cout 重新输入 endl; 四按照文件的创建和删除顺序,打印输出结果名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 11 页 - - - - - - - - - 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 11 页 - - - - - - - - - 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 11 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术总结

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁