磁盘存储空间的管理 实践报告

上传人:一*** 文档编号:116740577 上传时间:2022-07-06 格式:DOC 页数:17 大小:161.67KB
收藏 版权申诉 举报 下载
磁盘存储空间的管理 实践报告_第1页
第1页 / 共17页
磁盘存储空间的管理 实践报告_第2页
第2页 / 共17页
磁盘存储空间的管理 实践报告_第3页
第3页 / 共17页
资源描述:

《磁盘存储空间的管理 实践报告》由会员分享,可在线阅读,更多相关《磁盘存储空间的管理 实践报告(17页珍藏版)》请在装配图网上搜索。

1、目录 1.相关知识41.1空闲盘块的组织41.2空闲盘块的分配与回收52.系统设计52.1算法及说明52.2算法流程图62.3数据结构及各子程序63.成果73.1磁盘存储空间的分配73.2磁盘存储空间的回收73.3结束84.总结94.1 个人总结 赵勋94.2 个人总结 史迎丰104.3 个人总结 齐泓洋114.4 个人总结 李霖125参考文献12操作系统课程设计任务书指导教师姓名成晓静教研室信计课程设计题目磁盘存储空间的管理人数4学时1周设计目的、任务和要求(一) 目的要求学生运用适当的编程语言,模拟UNIX系统中的成组链接法。从而对操作系统有更深入的认识与理解。(二)任务在UNIX系统中,

2、以组为单位,用空闲块自己管理自己。要求用成组链接法实现磁盘空间的分配和回收(假定每组管理5个磁盘块)。建立一个文件目录,管理已经建立的文件的情况,按照给定的文件名进行空间回收(三)要求学生3个人组成一个小组,要求根据上述任务,通过查找资料,完成程序设计,并撰写分析报告,报告要体现工作过程、测试结果、分析等内容。设计的方法和步骤查阅资料,展开充分理论分析,在掌握算法原理后进行软件设计,完成下列任务:1、 熟悉此次设计的目标,查阅相关资料;2、 对算法理论进行剖析,论证算法实现的可行性;3、 根据可行的算法设计,进行软件程序实现,并最终解决实际问题。设计工作计划 本案例时间为5天,具体安排如下l

3、熟悉课设目标,查阅相关资料:1天l 算法理论进行剖析,论证算法实现的可行性:1天l 根据可行的算法设计,进行软件程序实现:2天l 对所设计的程序解决实际问题并分析,撰写分析报告:1天主要参考资料计算机操作系统 汤小丹 西安电子科技大学出版社操作系统课程设计 李善平 季江民 浙江大学出版社 教研室签字: 年 月 日院签字: 年 月 日1.相关知识1.1空闲盘块的组织(1)空闲盘块好栈用来存放当前可用的一组空闲的盘块好(最多含100个号),以及栈中尚有的空闲盘块号数N。顺便指出,N还兼作栈顶指针用。(2)文件区中的所以空闲盘块被分成若干组,比如,将每100个盘块作为一组。假定盘上共有1000个盘块

4、,每块大小为1kb,其中2017999号盘块用于存放文件,即作为文件区,这样,该区的最末一组盘块号应为79017999;次末组为78017900.;第二组盘块号为301400;第一组为201300(3)将每一组含有的盘块总数N和该组所有的盘块记入其前一组的第一个盘块的S.freee(0)S.free(99)中。这样,由各组的第一个盘块可链成一条链。(4)将第一组的盘块总数和所有的盘块号记入空闲盘块号栈中,作为当前可供分配的空闲盘块号。(5)最末一组只有99个盘块,其盘块号分别记入其前一组的S.freee(1)S.free(99)中,而在S.freee(0)中则存放“0”,作为空闲盘块链的结束标

5、志。1.2空闲盘块的分配与回收当系统要为用户分配文件所需的盘块时,须调用盘块分配过程来完成。该过程首先检查空闲盘块号栈是否上锁,如未上锁,便从栈顶取出一空闲盘块号,将与之对应的盘块分配给用户,然后将栈顶指针下移一格。若该盘块号已是栈底,即S.freee(0),这是当前栈中最后一格可分配的盘块号。由于在该盘块号所对应的盘块号记有下一组可用的盘块号,因此,须调用磁盘读过程,将栈底盘块号所对应的盘块的内容读入栈中,作为新的盘块号栈的内容,并把原栈底对应的盘块分配出去。然后,再分配一相应的缓冲区。最后,把栈中的空闲盘块数减1并返回。在系统回收空闲盘块时,须调用盘块回收过程进行回收。它是将回收盘块的盘块

6、号记入空闲盘块号栈的顶部,并执行空闲盘块数加1操作。当栈中空闲盘块号数目已达100时,表示栈已满,便将现有栈中的100盘块号记入新回收的盘块中,再将其盘块号作为新栈底。、2.系统设计2.1算法及说明首先定义磁盘分配数组并初始化,9个一维数组分别表示9个空闲块,程序运行时,先将专用块A0复制到内存中,然后进行功能选择,分配时,查MA,从中找出空闲块号,当一组的空闲块只剩第一块时,应把该块中指出的下一组的空闲块数和块号复制专用块这,然后把该块分配给申请者,当一组的空闲块分配完后则把专用块内容(下一组链接情况)复制到内存,再为申请者分配。回收时,输入待回收的块号,查找该块是否已被分配,若未分配,退出

7、,否则,当前组不满规定块数时,将归还块登记入该组,若当前组已满,则另建一新组,这时归还块作为新一组的第一块,应把内存中登记的一组链接情况MA复制到归还块中,然后在MA这重新登记一个新组。显示分组情况。2.2算法流程图选择分配还是回收磁盘空间分配磁盘空间回收磁盘空间继续y/n?若为y则继续分配若为n则退出程序2.3数据结构及各子程序(1) int MA; /*空闲块数组*/(2) int A96=5,1,2,3,4,5,5,6,7,8,9,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,5,0,11,12,13,14,0,0,0,0,0,0

8、,0,0,0,0,0,0; /*磁盘空间*/(3) int mark9; /*存放已分配的块*/ int No=0; /*已分配的块数*/(4) void display() /*显示分组情况*/(5) void assign() /*分配空闲块*/(6) void callback() /*回收空闲块*/(7) void menu() /*功能选择函数*/3.成果3.1磁盘存储空间的分配运行后,显示文件区中的所有空闲盘块号,将其分为三组,每组5个盘块。则第一组为15号盘块,第二组为610号盘块,第三组即最末一组为1114号盘块。(注:最后一组的盘块数为5是因为这是指可供使用的空闲盘块,在S.

9、free(0)中存放的0为空闲盘块的结尾标志。)之后键盘输入,输入1分配磁盘存储空间(每次仅分配一个存储空间)。3.2磁盘存储空间的回收输入y表示继续。接着继续输入2可以将已分配的磁盘存储空间进行回收。3.3结束若在选择continue or not?时选择n,则结束程序。4.总结4.1 个人总结 赵勋在一周的课设中,我对操作系统中的磁盘存储空间的管理有了更深的认识,同时对其中的算法“成组链接法”进行了深入的理解与运用,在VC6.0平台上运用C/C+语言对磁盘存储空间的管理进行了编程实现,在实践过程中也遇到了许多的困难,但是在小组共同努力,共同合作的基础上,我们还是圆满的完成了任务。同时深刻的

10、理解了所学的知识。对知识的理解程度要看你运用的好不好,实践时检验真理的标准,我也从中学到了很多东西。在一周的过程中,大家都付出了努力和汗水。一起交流,一起共同进步。同时我也了解到了团队合作的重要,一周中大家都分工明确,各司其职,最终编写出完整可运行的程序。磁盘存储空间一般可有空闲表法和空闲链表法来管理,但是空闲表法和空闲链表法都不适用于大型文件系统,因为这会使空闲表和空闲链表太长。在UNIX系统中采用的是成组链接法,这是将上述两种方法相结合而形成的一种空闲盘快管理方法,他兼备了上述两种方法的优点而克服了两种方法均有的表太长的缺点。对成组链接法进行了编程实现让我更好的了解了该方法的各项原理,同时

11、也对我后续的课程乃至毕业后找工作都有很大的帮助。总之,我很高兴能顺利完成任务并且学到很多东西。4.2 个人总结 史迎丰通过一周的课设,我对操作系统有了进一步的了解,尤其是对成组链接法有了更深的学习和运用。我更深刻地领会了操作系统工作原理和操作系统实现方法,并提高了程序设计能力,虽然实验的过程中遇到一些困难,但及时发现仔细研究解决使我更能深刻的理解所学知识。一周过得很快,但是我们组很好的完成了任务,大家都付出了努力和汗水。一起交流,一起共同进步。我学会了团队的合作是多么重要,不管你个人是多么的厉害,如果是只要你一个人去完成这次课程,那都是很有难度的,但如果整个团队齐心协力的去完成它,那么就会达到

12、事半功倍的效果。我们分工明确,每个人都非常认真的去完成自己的任务。这次课设,我受益匪浅,不仅学习到了知识,还学会了团队合作。同时,这次课设由c语言来完成,我发现我的c语言基础不是很扎实,不过通过同学的指导,我的c语言能力有了显著的提升。认识来源于实践,实践是认识的动力和最终目的,实践是检验真理的唯一标准。所以这次课设对我们的作用是非常大的,我从中学会了很多平时上课学不到的东西。这次课设虽然有些辛苦,但是我们能完美的完成任务,我感到很高兴,而且学到了很多。4.3 个人总结 齐泓洋时间如梭,一周的操作系统课设即将结束,时间虽短,但对于我来说,却是受益匪浅的,这期间,在老师和组员们的关心支持下,我逐

13、步对成组链接法有了更深一步的了解。空闲表法和空闲链表法都不适用于大型文件系统,因为这会使空闲表和空闲链表太长。在UNIX系统中采用的是成组链接法,这是将上述两种方法相结合而形成的一种空闲盘快管理方法,他兼备了上述两种方法的优点而克服了两种方法均有的表太长的缺点。 在UNIX系统中,将空闲块分成若干组,每100个空闲块为一组,每组的第一空闲块登记了下一组空闲块的物理盘块号和空闲块总数。如果一个组的第一个空闲块号等于0,则有特殊的含义,意味着该组是最后一组,即无下一个空闲块。分配空闲块的时候,从前往后分配,先从第一组开始分配,第一组空闲的100块分完了,才进入第二组。释放空闲块的时候正好相反,从后

14、往前分配,先将释放的空闲块放到第一组,第一组满了,在第一组前再开辟一组,之前的第一组变成第二组。做课程设计时,指导老师给了我们很大帮助,发现了很多我们没有想到的问题,提了很多改进系统的意见。课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,这次课程设计虽然很累,但我学到了不少东西,对软件的设计过程和方法有了更深入的了解,培养了我们的团队精神,锻炼了我们的沟通和表达能力。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。 4

15、.4 个人总结 李霖通过本学期的操作系统课程进程控制、请求分页存储器管理、设备管理、文件管理、进程调度等实验,模拟操作系统原理的实现,使我能更深刻地领会操作系统工作原理和操作系统实现方法,并提高程序设计能力,虽然实验的过程中遇到一些困难,但及时发现仔细研究解决使我更能深刻的理解所学知识。实验程序仍有诸多不足之处,但实验过程中收获颇多,也为以后的实验积累了经验,这也更能促使我进步。在UNIX系统中,将空闲块分成若干组,每100个空闲块为一组,每组的第一空闲块登记了下一组空闲块的物理盘块号和空闲块总数。如果一个组的第一个空闲块号等于0,则有特殊的含义,意味着该组是最后一组,即无下一个空闲块。分配空

16、闲块的时候,从前往后分配,先从第一组开始分配,第一组空闲的100块分完了,才进入第二组。释放空闲块的时候正好相反,从后往前分配,先将释放的空闲块放到第一组,第一组满了,在第一组前再开辟一组,之前的第一组变成第二组。通过本次课程设计,让我对UNIX操作系统有了一定的了解,特别是掌握了一些基本的UNIX操作指令,对内核的修改,调用,以及实现文件管理两方面功能也加深了索引部分的认识,以前只是知道个原理性的东西,为接下来的UNIX学习打下了基础。同时,也加深了对计算机操作系统这门课的部分知识点的理解。也加强了我的调试能里,以及遇到问题能基本靠自己或上网检索的能力。这个课设让我做使不那么死板,后来遇到问

17、题我不会非得按照那个貌似正确的步骤一步一步来做,而是会去想它的原理,用自己的方法从本质上把问题解决。这个课设既有趣又让我学到了不少东西,感谢老师的指导!5参考文献计算机操作系统 汤小丹 西安电子科技大学出版社操作系统课程设计 李善平 季江民 浙江大学出版社C/C+源代码:#includeint MA6=5,1,2,3,4,5; /*空闲块数组*/ int A96=5,1,2,3,4,5,5,6,7,8,9,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,5,0,11,12,13,14,0,0,0,0,0,0,0,0,0,0,0,0; /*

18、磁盘空间*/ int mark9; /*存放已分配的块*/ int No=0; /*已分配的块数*/ void display1() int i,j,temp,count; No=0; if(MA1!=0) i=MA0; printf(ngroup1:); for(j=1;j=i;j+) printf( %d ,MAj); mark+No=MAj; temp=MA1;count=2; while(Atemp1!=0) printf(ngroup%d:,count); i=Atemp0; for(j=1;j=i;j+) printf( %d ,Atempj); mark+No=Atempj; c

19、ount+; temp=Atemp1; printf(ngroup%d:,count); i=Atemp0; for(j=2;j0) printf( %d ,Atempj); mark+No=Atempj; else i=MA0; if(i=1) printf(nThe blocks are all assigned); else printf(ngroup1:); for(j=2;j=i;j+) printf(%d,MAj); mark+No=MAj; void display() /*显示分组情况*/ int i,j; if(MA0!=0) display1(); else i=MA1;f

20、or(j=0;j1) /*若该组不止一个空闲块*/ i=MA0; s=MAi; MA0-; printf(nnumber of the block:%d,s); else if(MA0=1) /*只剩一个空闲块*/ if(MA1!=0) /*还有其它空闲块组*/ s=MA1; for(i=0;i=5;i+) A0i=Asi; MA0-; printf(nnumber of the block:%d,s); else /*没有其它空闲块组*/ printf(nThere isnt any space); return; else /*当前组已分配完*/ for(i=0;i=5;i+) MAi=A

21、0i; assign(); display(); /*显示分组情况*/ void callback() /*回收空闲块*/ int i,j,temp; printf(ninput the No. of the block you want to callback:); scanf(%d,&j); getchar(); /*得到待回收的空闲块号*/ for(temp=1;temp=No;temp+) if(marktemp=j) break; if(tempNo+1) /*若该空闲块已在,退出*/ printf(nThe block is in the disk); return; if(MA0

22、5) /*当前组不满5块*/ i=MA0; MAi+1=j; MA0+; else /*已有5块*/ for(i=0;i=5;i+) Aji=MAi; MA0=1; MA1=j; display(); /*显示*/ void menu() /*功能选择函数*/ int choice; char judge; printf(ninput your choice:(1-assign,2-callback):); scanf(%d,&choice); getchar(); if(choice=1) assign(); else if(choice=2) callback(); else printf(ninvalid command!); printf(ncontinue or not?(y-Yes,n-Not):); scanf(%c,&judge); getchar(); if(judge=y) menu(); else printf(nNow the graph is:); display(); printf(npress any key to quit); getchar(); void main() int i; for(i=0;i=5;i+) MAi=A0i; display(); menu(); 17

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