




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实 验 报 告 课程名称 操作系统 实验名称 文件管理 班 级 计科1203 学 号 201207010321 姓 名 马万里 指导教师 赵安科 实验日期 2015.6.19 成 绩 模拟文件存储空间管理一内容:模拟文件存储空间的管理,采用空白文件目录法和空白块链法实施空间分配。二思想:图一 文件空闲区分配算法图二 文件空闲区回收算法三要求:(1)自拟模拟数据演示运行结果(假定系统可用空闲块数为100)。为便于检查,建立和删除文件顺序如下 分配文件:F1,3 分配文件:F2,5 分配文件:F3,3 分配文件:F4,8分配文件:F5,4 分配文件:F6,2 删除文件:F1 删除文件:F2分配文件:F7,6 删除文件:F3 分配文件: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 Ufile8; 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#当前的空文件目录表#endl;cout序号 首块号 空白块个数 末块号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; coutendl;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 /修改空白区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) /当遍历完整个空白表而且不存在小于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(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)=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+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 3(部分略) 删除 f1:删除f2 分配:f7 6:删除 f3: 分配:f8 4:六实验心得 本次实验相对来说比较完美,最主要的是对流程图的深入理解,对
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024医院三基考试综合提升测试卷含答案详解
- 2025版跨境快递运输合同范本(文件与包裹)
- 2025承包合同幼儿园食堂承包合同
- 2025施工员测试卷(历年真题)附答案详解
- 2025年湖北武汉理工大学附属小学教师招聘笔试备考题库参考答案详解
- 2024年自考专业(护理)考试综合练习(满分必刷)附答案详解
- 2025年湖北武穴市事业单位引进人才40人笔试高频难、易错点备考题库及完整答案详解1套
- 2025年安全培训考试练习题附答案
- 大学足球专修课考试复习题库及答案
- 2025年全国中小学生安全知识竞赛试题库及参考答案
- 室内装饰装修施工工艺标准规范及管理流程
- 【拓展阅读】类文阅读《燧人氏钻木取火》
- 李建涛员工从“老板”做起课件
- 儿童认知发展
- 海船船员甲类三管轮实习记录簿
- 注采压力分布规律研究课件
- 填料及表面处理培训课件
- 4初步设计评审报告
- 文学理论(全套课件)
- 法院民事调解协议书
- 2022年人口变动情况抽样调查表
评论
0/150
提交评论