




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实 验 报 告课程名称 操作系统 实验名称 文件系统存储空间管理模拟 专业班级 计1001 姓 名 郭军涛 学 号 201007010108 实验日期 2013.06.20 成绩 指导教师 王潇潇 一、 实验内容1. 模拟文件空间分配、释放过程,可选择连续分配、链式分配、索引分配方法; 2. 文件空闲空间管理,可采用空白块链、空白目录、位示图方法;二、实验要求及原理根据提出的文件分配和释放请求,动态显示磁盘空闲空间的状态以及文件目录的变化,以位示图和索引分配为例:每次执行请求后要求显示或打印位示图的修改位置、分配和回收磁盘的物理块地址、更新的位示图、目录。地址过程;用数组表示位示图,其中的每一位对应磁盘一个物理块的状态,0表示、空闲,1表示分配;当请求分配一个磁盘块时,寻找到数组中为0的位,计算相对磁盘块号,并计算其在磁盘中的物理地址(柱面号、磁道号、物理块号),并将其状态由0变到1。当释放某一物理块时,已知其在磁盘中的物理地址,计算其相对磁盘块号,再找到位示图数组中的相应位,将其状态由1变为0。三、实验步骤1. 输入磁盘基本信息参数,计算位示图大小,并随机初始化位示图;(1)磁盘基本信息:磁盘柱面数m, 每柱面磁道数p, 每磁道物理块数q;(2)假设采用整数数组存放位示图,则数组大小为:Size= ceil(柱面数*每柱面磁道数*每磁道物理块数)/ (sizeof(int)*8) (3)申请大小为size的整数数组map,并对其进行随机初始化。 例如:假设m=2, p=4, q=8, 共有64个磁盘块, 若sizeof(int)=2, 则位示图大小为4,map4如下: 1514131211109876543210map00011010011001010map11010110000110000map2011001110011001map31000100001100110位示图中每一位对应的相对磁盘块号如下图,磁盘块号由小到大对应于数组的低地址到高地址位上。即map0的第0位到第15位分别对应0号磁盘块到15号磁盘块的状态,map1的第0位到第15位对应16号磁盘块到31号磁盘块的状态,以此类推。1514131211109876543210map01514131211109876543210map131302928272625242322212019181716map247464544434241403938373635343332map363626160595857565554535251504948如上表所示, 29号磁盘的状态存在map1中,对应于第13位;2. 输出初始位示图信息;3. 输入文件分配或释放请求, (1)格式:“+ 文件名 申请块数” 或 “ - 文件名 ” “+”表示申请文件分配,“-”表示删除文件 如: + F1 54. 根据请求完成相应操作。 (1)若为分配申请x个盘块,则在位示图中找到x个为0的位,将其修改为“1”,计算相应具体物理设备的柱面号C、磁道号H和物理块号R,并将CHR地址或相对磁盘块号记录在文件目录中。输出位示图修改位置、分配的磁盘块CHR地址、修改后的目录和位示图信息。否则,空间不够,退出执行下一条请求; l 计算公式如下:a. 已知位示图中的下标i , j, 计算相对块号 Block= i*sizeof( int )*8+j b. 已知相对块号计算柱面、磁道、物理块号如下: 柱面号 C= 相对块号/(每柱面磁道数*每磁道物理块数) 磁道号 H= 相对块号%(每柱面磁道数*每磁道物理块数)/ 每磁道物理块数 物理块号 R= 相对块号%每磁道物理块数l 文件目录如下(以索引表分配为例):文件名首个物理块CHR地址块个数索引表beta(0,0,0)2(0,0,0)(0,0,1)Alpha(2,3,0)3(2,3,0)Toyota43(4 9 12)(Sony文件名首个物理块地址(相对)块个数索引表beta02(0,2,3)Alpha33(3,6,7)Toyota83(8, 9,12)(2)若为删除申请,则从目录中找到要删除的文件所在的目录项,读取索引表,依次读取文件相应的盘块CHR地址, 计算该盘块的相对磁盘块号,再计算其相应信息在位示图中的位置( i,j),将位示图中的相应位有“1”改为“0”, 并从目录中删除该目录项。输出删除的磁盘块CHR地址、相应位示图修改位置、修改过的位示图和目录。计算过程如下:相对磁盘块号 = 柱面号*每柱面磁道数*每磁道物理块数+ 磁道号*每磁道物理块数+ 物理块号i = 相对磁盘块号/ (sizeof(int)*8)j = 相对磁盘块号% (sizeof(int)*8)四、源程序代码#include #include using namespace std;struct AllocatedSpace /已分配内存空间结构体 int start_address; int length; char job; struct AllocatedSpace *next;struct FreeSpace /未分配内存空间结构体 int start_address; int length; struct FreeSpace *next;struct AllocatedSpace *allocated_header;struct FreeSpace *free_header;struct FreeSpace *freenext;void allocatememory() /分配内存函数char jobname;int joblength;int min,l=0;coutjobname;coutjoblength;struct FreeSpace *w=free_header; structFreeSpace *p=free_header; /指向第一个可以分配的空闲结点p=p-next;struct FreeSpace *s=free_header; /指向p的前一个结点 struct AllocatedSpace *t=allocated_header; while(p-lengthnext;if(p=NULL)break;if(p=NULL)coutlength-joblength; while(p!=NULL) /现在p指向当前要被切割的结点 if(p-lengthjoblength) l=p-length-joblength; if(lnext;struct AllocatedSpace *q=new AllocatedSpace; q-job=jobname;q-length=joblength;q-start_address=w-start_address;while(t-next!=NULL)t=t-next;q-next=t-next;t-next=q;while(s-next!=w)s=s-next;if(w-length=q-length)s-next=w-next;delete w;elsew-start_address=w-start_address+q-length;w-length=w-length-q-length;void reclaimmemory()char jobname;coutjobname; structFreeSpace *p=new struct FreeSpace;/指向当前被创建的空闲结点struct FreeSpace *s=free_header;/指p的前一个结点struct FreeSpace *m=free_header;/指向s的前一个结点struct AllocatedSpace *q=allocated_header;/指向被回收的结点struct AllocatedSpace *t=allocated_header;/指向被回收的结点的前一个结点while(q-job!=jobname)/找到被回收的结点q=q-next;if(q=NULL)coutlength=q-length;p-start_address=q-start_address;while(s-start_addressstart_address)s=s-next;while(m-next!=s)m=m-next;p-next=s;m-next=p;coutnext!=q)t=t-next;t-next=q-next;delete q;s=free_header;m=free_header;s=s-next;m=m-next;while(m!=NULL)m=m-next;if(m=NULL)break;if(s-start_address+s-length=m-start_address)s-length=s-length+m-length;s-next=m-next; continue;s=s-next;void showmemory()struct FreeSpace *s=free_header;/指向FreeSpace的头结点,开始往后遍历s=s-next;struct AllocatedSpace *q=allocated_header;/指向AllocatedSpace的头结点,开始往后遍历q=q-next;cout已分配区的情况如下:n;while(q!=NULL)cout作业名:job开始地址:start_address长度:lengthnext;cout空闲结点的情况如下:n;while(s!=NULL)cout开始地址:start_address长度:lengthnext;int main()int n; allocated_header=new struct AllocatedSpace; free_header=new struct FreeSpace;freenext=new struct FreeSpace;freenext-length=100000;freenext-start_address=0;freenext-next=NULL;free_header-next=free
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 邮储银行2025防城港市数据分析师笔试题及答案
- 交通银行2025威海市半结构化面试15问及话术
- 中国银行2025秋招半结构化面试题库及参考答案宁夏地区
- 邮储银行2025济源市秋招笔试EPI能力测试题专练及答案
- 农业银行2025忻州市金融科技岗笔试题及答案
- 邮储银行2025数据分析师笔试题及答案甘肃地区
- 教师招聘之《小学教师招聘》通关训练试卷详解(名师系列)附答案详解
- 交通银行2025固原市秋招英文面试题库及高分回答
- 教师招聘之《小学教师招聘》综合提升试卷带答案详解(达标题)
- 教师招聘之《幼儿教师招聘》能力提升试题打印附参考答案详解【培优】
- 广西贺州市八步区公道冲钾长石矿采矿权出让收益率评估报告
- 中国人民抗日战争纪念馆面向社会公开招聘工作人员模拟检测试卷【共1000题含答案解析】
- 高考688个高频词汇 word版
- 农副产品购销合同完整版(2篇)
- GB/T 9115.4-2000环连接面对焊钢制管法兰
- 一年级数学上册左、右练习题及答案解析
- GB 9743-1997轿车轮胎
- 小学语文口语交际教学讲座PPT
- 上海建筑装饰集团发展战略报告(doc 30)
- 《基础统计》教学案例“郑州市大瓶装纯水市场调查”统计应用案例
- DB36_T 1157-2019 瓷土、瓷石矿产地质勘查规范(高清无水印-可复制)
评论
0/150
提交评论