版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、中北大学操作系统课程设计说 明 书 学 院、系:软件学院专 业:软件工程学 生 姓 名:xxx学 号:设 计 题 目:磁盘存储空间管理的算法模拟 起 迄 日 期:指 导 教 师:xxx 1.需求分析本设计题目主要熟悉磁盘空间的管理,实现磁盘空间的分配和回收操作。通过本次设计,帮助我们理解在磁盘中的分配方法,以及如何充分有效地利用磁盘空间,使我们初步具有研究、设计、编制和调试操作系统模块的能力。在这次实验中我所负责的设计内容是:采用空白块成组链接结构实现磁盘空间的分配和回收,基本要求有两点分别是:(1) 具有创建文件、空间分配、删除文件、释放空间等基本功能;(2
2、) 把个文件目录、磁盘空间管理的数据结构变化情况显示出来。最后,在linux系统中,实现了采用空白块成组链接结构实现磁盘空间的分配和回收。2.总体设计磁盘空间回收的流程磁盘空间分配的流程整个程序分为两个模块,分别是分配和回收。(1)分配时,查MA,从中找出空闲块号,当一组的空闲块只剩第一块时,应把该块中指出的下一组的空闲块数和块号复制到专用块这,然后把该块分配给申请者,当一组的空闲块分配完后则把专用块内容(下一组链接情况)复制到内存,再为申请者分配。 (2)回收时,输入待回收的块号,查找该块是否已被分配,若未分配,退出,否则,当前组不满规定块数时,将归还块登记入该组,若当前组已满,
3、则另建一新组,这时归还块作为新一组的第一块,应把内存中登记的一组链接情况MA复制到归还块中,然后在MA这重新登记一个新组。显示分组情况。3详细设计(1) 假定磁盘存储空间已被划分成长度为n的等长块,共有M块可供使用。UNIX系统中采用空闲块成组链接的方法 来管理磁盘存储空间,将磁盘中的每N个空闲块(N<M)分成一组,最后一组可以不足N块,每组的第一块中登记了下一组空闲块的块数和块号,第一组的块数和块号登记在专用块中,登记的格式如下:0空闲块数k1空闲块号12空闲块号2MMMMK空闲块号kMMMM当第一项内容为“0”时,则第二项起指出的空闲块是最后一组。(2) 现模拟UNIX系统的空闲块成
4、组链接,假定共有8块可供使用,每3块为一组,则空闲块成组链接的初始状态为:开始时,空闲块号是顺序排列的,但经若干次的分配和归还操作后,空闲块的链接就未必按序排列了。用二维数组A:array 0M-1 of array 0n-1来模拟管理磁盘空间,用Ai表示第I块,第0块A0作为专用块。(3) 成组链接的分组情况记录在磁盘物理块中,为了查找链接情况,必须把它们读入主存,故当磁盘初始化后,系统先将专用块内容复制到主存中。定义一个数组MA存放专用块内容,即MA: =A0。申请一块磁盘空间时,查MA,从中找出空闲块号,当一组的空闲块只剩第一块时,则应把该块中指出的下一组的空闲块数和块号复制到专用块中,
5、然后把该块分配给申请者。当一组的空闲块分配完后则把专用块内容(下一组链接情况)复制到主存,再为申请者分配。分配算法如图6-1。图6-1 采用成组链接的分配算法(4) 归还一块时给出归还的块号,叵当前组不满规定块数时,将归还块登记入该组;若当前组已满,则另建一新组,这时归还块作为新一组的第一块,应把主存中登记的一组链接情况MA复制到归还块中,然后在MA重新登记一个新组。归还一块的算法如图6-2。图6-2 采用成组链接的回收算法(5) 设计分配和归还磁盘空间的程序,能显示或打印分配的磁盘空间的块号,在完成一次分配或归还后能显示或打印各空闲块组的情况(各组的空闲块数和块号)。本实习省去了块号与物理地
6、址之间的转换工作,而在实际的系统中必须进行块号与物理地址的转换工作。(6) 运行你所设计的程序,假定空闲块链接的初始状态如提示(2),现先分配4块,再依次归还第2块和第6块。把执行后分配到的块号依次显示或打印出来,且显示或打印空闲块组的情况。在上次执行的基础上继续分配3块,然后归还第1块,再申请5块,显示或打印依次分配到的块号及空闲块组情况。4. 代码#include<stdio.h>int MA4; /*空闲块数组*/int A94=3,1,2,3,3,4,5,6,0,0,0,0,0,0,0,0,3,0,7,8, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;
7、/*磁盘空间*/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
8、;j+) printf("%d ",Atempj); mark+No=Atempj; count+; temp=Atemp1; printf("ngroup%d:",count); i=Atemp0; for(j=2;j<=i+1;j+) if(Atempj>0) printf("%d ",Atempj); mark+No=Atempj; else i=MA0; if(i=1) printf("n所有的块分配"); else printf("ngroup1:"); for(j=2;j
9、<=i;j+) printf("%d ",MAj); mark+No=MAj; void display() /*显示分组情况*/ int i,j; if(MA0!=0) display1(); else i=MA1; for(j=0;j<=3;j+) MAj=Aij; display1(); void assign() /*分配空闲块*/ int s,i; if(MA0>1) /*若该组不止一个空闲块*/ i=MA0; s=MAi; MA0-; printf("n空闲块的块数:%d",s); else if(MA0=1) /*只剩一个
10、空闲块*/ if(MA1!=0) /*还有其它空闲块组*/ s=MA1; for(i=0;i<=3;i+) A0i=Asi; MA0-; printf("n空闲块的块数:%d",s); else /*没有其它空闲块组*/ printf("n没有任何空间"); return; else /*当前组已分配完*/ for(i=0;i<=3;i+) MAi=A0i; assign(); display(); /*显示分组情况*/ void callback() /*回收空闲块*/ int i,j,temp; printf("n输入你想回收的
11、块号:"); scanf("%d",&j); getchar(); /*得到待回收的空闲块号*/ for(temp=1;temp<=No;temp+) if(marktemp=j) break; if(temp<No+1) /*若该空闲块已在,退出*/ printf("n该空闲块已存在"); return; if(MA0<3) /*当前组不满3块*/ i=MA0; MAi+1=j; MA0+; else /*已有3块*/ for(i=0;i<=3;i+) Aji=MAi; MA0=1; MA1=j; displa
12、y(); /*显示*/ void menu() /*功能选择函数*/ int choice; char judge; printf("n输入您的选择:(1 -分配,2 -回收):"); scanf("%d",&choice); getchar(); if(choice=1) assign(); else if(choice=2) callback(); else printf("n无效命令!"); printf("n继续还是结束?(Y -继续,N-返回)"); scanf("%c",&judge); getchar(); if(judge='y') menu(); else printf("n现在,该图是:"); display(); printf(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年高端芯片研发与生产许可合同
- 二零二五年度个人消费贷款合同标准范本6篇
- 2025年度消防工程施工图审查合同协议书3篇
- 2025年度智能家居系统研发合同证明书3篇
- 2024年货权转移合同样本2篇
- 二零二五年度体育设施个人承包管理合同
- 二零二五年度20XX标准离婚协议范本离婚后子女教育资助与成长规划3篇
- 二零二五年度企业融资反担保合同范本3篇
- 2024年高端医疗设备采购与维修合同
- 2025年度包装盒印刷材料环保认证采购合同3篇
- DLT 5434-2021 电力建设工程监理规范表格
- 2024年房屋交接确认书
- 拓展低空经济应用场景实施方案
- 北京市东城区2023-2024学年八年级上学期期末生物试题【含答案解析】
- 天疱疮临床分期与治疗方案研究
- 开放系统10861《理工英语(4)》期末机考真题及答案(第102套)
- 综合技能训练实训报告学前教育
- 2024年国家能源集团招聘笔试参考题库含答案解析
- MOOC 管理学-郑州轻工业大学 中国大学慕课答案
- 军事理论智慧树知到期末考试答案2024年
- 2024年贵州贵安发展集团有限公司招聘笔试参考题库附带答案详解
评论
0/150
提交评论