空闲磁盘存储空间的管理-OS课程设计(共15页).docx
《空闲磁盘存储空间的管理-OS课程设计(共15页).docx》由会员分享,可在线阅读,更多相关《空闲磁盘存储空间的管理-OS课程设计(共15页).docx(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上OS课程设计空闲磁盘存储空间的管理1、 课程设计任务、要求、目的我们组选的题目是第17题:空闲磁盘存储空间的管理:简单方法。具体要求如下:l 建立相应的数据结构;l 磁盘上建立一个文件,文件长度设为10MB,用该文件来模拟一个磁盘,磁盘的物理块大小为512字节。l 建立进程的数据结构;l 时间的流逝可以用下面几种方法模拟:(a)按键盘,每按一次可认为过一个时间单位;(b) 响应WM_TIMER;l 将一批进程对磁盘的请求的情况存磁盘文件,以后可以读出并重放;l 使用两种方式产生进程对磁盘的请求:(a) 自动产生 (b) 手工输入l 显示每次磁盘的请求和空间释放后的相关
2、数据结构的状态;l 显示每次磁盘的请求和空间释放后状态;l 支持的管理方法:空闲表法、空闲链表法、位示图法、UNIX成组链接法。该课程设计的目的:磁盘初始化时把磁盘存储空间分成许多块(扇区),这些空间可以被多个用户共享。用户作业在执行期间常常要在磁盘上建立文件或把已经建立在磁盘上的文件删去,这就涉及到磁盘存储空间的分配和回收。一个文件存放到磁盘上,可以组织成顺序文件(连续文件)、链接文件(串联文件)、索引文件等,因此,磁盘存储空间的分配有两种方式,一种是分配连续的存储空间,另一种是可以分配不连续的存储空间。怎样有效地管理磁盘存储空间是操作系统应解决的一个重要问题,通过这个课程设计可以使我们更好
3、地熟悉掌握磁盘存储管理的原理和分配与回收算法,进一步掌握软件开发方法并提高解决实际问题的能力。2、 原理与算法描述我们组将题目中所给的方法分为连续存储空间法和链接存储空间法,并选取其中最具代表性的位示图法和UNIX成组链接法(连续存储与链接存储的结合)来进行代码的编写。位示图法原理:位示图用来指出磁盘块的使用情况,位示图中各个元素的取值只有“0”和“1”两种,其中“1”状态表示相应的磁盘块已经被占用,“0”状态表示该磁盘块空闲。申请磁盘块时,分配函数查询第一个空闲块所属的位置,然后从该位置往后选取对应数目的空闲块进行分配,将相应位置的位示图上相应元素置为“1”。为了编程方便,我们查阅资料,假设
4、一个磁盘有8个柱面,每个柱面有2个磁道,每个磁道有4个物理记录。释放磁盘块时与分配磁盘块是相反的操作,由释放函数找到第一个空闲磁盘块,并从该位置往前一单位将被占用的相应数目的磁盘块释放,将位示图上相应元素置为“0”。成组链接法原理:成组链接法常应用于UNIX系统中,其主要思想是将结合顺序表和链表进行择优组合,即定义组内为顺序表,最大值为MAXGROUP,大于MAXGROUP的磁盘块另行分组,构成新的顺序表;但是这些顺序表之间用链表的结构进行连接,相当于添加一个新的节点。3、 开发环境由于我们只是简单的对磁盘处理进行模拟,所以就在自己的个人PC上进行,用的IDE是DEV C+(Eclipse上J
5、AVA写的界面被老师打回来了。)。4、 重要算法和设计思路描述设计思路:对于位示图法,我们就是定义一个矩阵用来可视化磁盘空间的使用情况,出于对控制台界面的考虑,我们将条件简化为:假设一个磁盘有3个柱面,每个柱面有2个磁道,每个磁道有4个物理记录,将矩阵简化为8*3的规模。然后分别建立process顺序表数据结构,存储申请的物理块信息;bitmap位示图类来存储位示图的数据和相应的操作,这些操作包括位示图二维数组bitmapMN来存储位示图信息,Initbitmap()初始化位示图,spaceisok() 判断位示图是否合理,displaybitmap()用来打印位示图信息。对于成组链接法,我们
6、定义组结构体group和进程结构体process,定义顺序表最大值MAXGROUP为20,大于MAXGROUP的磁盘块另行分组,构成新的顺序表;但是这些顺序表之间用链表的结构进行连接,相当于添加一个新的group节点。用distribute()函数分配内存块,用recycle()函数撤消进程 ,回收内存块 。用view()函数显示一些进程和数据结构的相应信息。5、 程序实现数据结构我们组选的题目是第17题:空闲磁盘存储空间的管理:简单方法6、 程序实现程序清单位示图法:#include #include #include using namespace std;const int cylind
7、er=3,track=2,sector=4;/柱面、磁道、物理块 号 #define SIZE 100/最大块数 const int M=cylinder,N=track*sector;struct process/process顺序表数据结构,存储申请的物理块信息 char name20;int cSIZE,tSIZE,sSIZE;int n;process processtableSIZE;/process格式表 int ppointer=-1;/process指针 class bitmap/位示图 结构体 public:int bitmapMN;void Initbitmap();/初始
8、化位示图bool spaceisok(int n);/位示图符合判断void displaybitmap();/打印 ;bitmap bm;/全局位示图,为所有进程共享 void bitmap:Initbitmap()int i,j; cout*n; cout位示图初始化n; cout*n; for(i=0;iM;i+) for(j=0;jN;j+) bitmapij=0; /getchar(); displaybitmap();/初始化后位示图 getchar(); /system(cls);bool bitmap:spaceisok(int n)/判断位示图空闲物理块是否足够 int co
9、unt=0;for(int i=0;iM;i+)for(int j=0;jN;j+)if(bitmapij=0)count+;if(countn)return false;elsereturn true;void bitmap:displaybitmap()/打印位示图int i,j;coutn当前位示图信息如下:n;coutn*n;for(i=0;iM;i+)for(j=0;jN;j+)couttbitmapij;coutendl;coutn*n;if(ppointer0)coutn尚未分配磁盘空间n;return;elsecoutn当前分配信息如下:n;coutn#;coutn进程名tt分
10、配的物理块数n;/coutn进程名tt分配的物理块数tt物理块信息n;for(int i=0;i=ppointer;i+)if(processtablei.n=0)continue;elsecoutnprocesstablei.namett processtablei.n;/*for(j=0;jprocesstablei.n;j+)if(j=0)coutttt(processtablei.cj,processtablei.tj,processtablei.sj)n;elsecoutttttt(processtablei.cj,processtablei.tj,processtablei.sj)
11、n;*/coutn#n; void distribute(char name20,int n)/分配 int i,j; int count=0;/*计数器*/ for(i=0;i=ppointer;i+)/processtable中逐个搜索指定进程 if(!strcmp(processtablei.name,name)coutn进程名重复,请检查后命名。n;goto end; if(!bm.spaceisok(n) cout空间不足,找不到n块物理块,分配失败!;return; ppointer+; strcpy(processtableppointer.name,name);/分配的物理块赋
12、予名字 processtableppointer.n=n;/物理块数 for(i=0;iM;i+)/二维数组逐个搜索空闲物理块 for(j=0;jN;j+)if(bm.bitmapij=0) processtableppointer.ccount=i;/*柱面号*/processtableppointer.tcount=j/4;/*磁道号*/processtableppointer.scount=j%4;/*物理记录号*/bm.bitmapij=1;/coutendl;count+;if(count=n)return; end: return;void recycle(char name20)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 空闲 磁盘 存储空间 管理 OS 课程设计 15
限制150内