UNIX磁盘空间管理

UNIX磁盘空间管理

ID:40103095

大小:141.00 KB

页数:14页

时间:2019-07-21

UNIX磁盘空间管理_第1页
UNIX磁盘空间管理_第2页
UNIX磁盘空间管理_第3页
UNIX磁盘空间管理_第4页
UNIX磁盘空间管理_第5页
资源描述:

《UNIX磁盘空间管理》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实验报告课程:操作系统班级:姓名:学号:成绩:指导教师:实验日期:实验密级:预习程度:实验时间:仪器组次:必修/选修:实验序号:实验名称:UNIX磁盘空间管理算法实验目的与要求:目的:掌握UNIX外存空间管理中的分组链接算法。要求:1.在程序运行的结果中应包含磁盘块的分配与回收操作。2.可根据输入的文件名、文件大小进行模拟磁盘分配,并在每次分配与回收后显示分配与回收是否成功,以及分配、回收的磁盘块号。3.在程序执行过程中,至少应包含分配不成功一次的信息。4.可以查看当前磁盘块的使用情况:哪些块空闲,哪些块被哪些文件占用。实验仪器:名称型号数量微机1实

2、验三UNIX磁盘空间管理算法一、实验内容编写C语言程序,模拟UNIX磁盘空间管理中使用的分组链接法。1.定义一个记录磁盘块号的堆栈S—free[10],以及记录栈中现有磁盘块数的变量S—nfree。2.定义一个由40个元素构成的结构数组block[40]用作磁盘块存放。structsize{intblocl[10];}structblocd{structsizea[10];//用于在空闲磁盘块号链中存放磁盘块号}block[40];3.假设系统中文件的最大容量为100个磁盘块,且最多只有5个文件,定义一个由5个元素构成的结构数组file[5]用于记录

3、各个文件占用的磁盘块,。structFile{intfileblocd[100];//用于记录分别分配给文件的磁盘块号}file[5];4.编写函数init()完成空闲磁盘块号堆栈、空闲磁盘块号队列及记录文件占用磁盘块状态的file结构数组。5.编写函数alloc(fileno,blockd),完成磁盘块的分配操作。其中的参数fileno为文件序号,用于指定需要分配的文件。6.编写函数free(fileno),完成文件占用磁盘块的释放操作。其中的参数fileno为文件序号,用于指定需要释放磁盘块的文件。7.编写main()函数完成下列操作:•调用in

4、it()函数完成初始设置。•从终端输入命令,控制磁盘块的分配与回收操作。二、实验要求第13页,共13页1.在程序运行的结果中应包含磁盘块的分配与回收操作。2.可根据输入的文件名、文件大小进行模拟磁盘分配,并在每次分配与回收后显示分配与回收是否成功,以及分配、回收的磁盘块号。3.在程序执行过程中,至少应包含分配不成功一次的信息。4.可以查看当前磁盘块的使用情况:哪些块空闲,哪些块被哪些文件占用。一、实验思路成组链接法:按照题目要求,首先把文件存储设备中的所有空闲快按每10块分为一组,每组的第一块用来存放前一组中各块的块号和总块数。按照题目要求进行分组之

5、后,系统可根据申请者的要求进行空闲块的分配和回收。1.首先确定结构体:1)用作磁盘块存放的结构数组:structsize{intblocl[10];}structblocd{structsizea[10];//用于在空闲磁盘块号链中存放磁盘块号}block[40];每10块为一组,分为40组。每块中有10个空闲块。2)各文件占用的磁盘块结构体:structfile{intfileblocd[100];intlength;}file[5];每个文件的最大容量是100个磁盘块fileblocd[100],最多5个文件,length表示文件长度。2.确定全

6、局变量:ints_free[10];//记录磁盘块号的堆栈ints_nfree=0;//记录栈中现有磁盘块数的变量第13页,共13页intn;//分配或回收的文件号intm;//分配的文件大小intCurrent=39;//表示当前外存最后组号1.初始化函数init()在初始化时,需要记录每组空闲块的块号,并且将最后一组空闲块的块号信息送入内存数组s_free[10]中,因为分配时是从最后一组开始的。在此,我把每组的最后一块的10个空间用来记录这一组空闲块的块号,如第一组的最后一块十个数0-9:block[1].a[9].blocl[0]=0,blo

7、ck[1].a[9].blocl[1]=1······block[1].a[9].blocl[9]=9分别表示这一组的十个空闲块块号是0-9。此外,在初始化时,还需要将文件块号的数组清零:for(intq=0;q<=4;q++){//文件块号的数组清零for(intp=0;p<=99;p++){file[q].fileblocd[p]=0;}file[q].length=0;}完成之后,需要调整当前外存最后组号和栈中现有的磁盘块数。2.分配函数voidalloc(intm_alloc,intn_alloc),其中m_alloc为需要分配的块数,n_a

8、lloc为文件号:在分配时,按照后进先出的原则,分配程序在取走s_nfree所指的块号后,做s_nfree=

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。