- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
空闲磁盘存储空间的管理-OS课程设计
空闲磁盘存储空间的管理-OS课程设计
PAGE
空闲磁盘存储空间的管理-OS课程设计
OS课程设计
空闲磁盘存储空间的管理
课程设计任务、要求、目的
我们组选的题目是第17题:空闲磁盘存储空间的管理:简单方法。
具体要求如下:
建立相应的数据结构;
磁盘上建立一个文件,文件长度设为10MB,用该文件来模拟一个磁盘,磁盘的物理块大小为512字节。
建立进程的数据结构;
时间的流逝可以用下面几种方法模拟:(a)按键盘,每按一次可认为过一个时间单位;(b) 响应WM_TIMER;
将一批进程对磁盘的请求的情况存磁盘文件,以后可以读出并重放;
使用两种方式产生进程对磁盘的请求:(a) 自动产生 (b) 手工输入
显示每次磁盘的请求和空间释放后的相关数据结构的状态;
显示每次磁盘的请求和空间释放后状态;
支持的管理方法:空闲表法、空闲链表法、位示图法、UNIX成组链接法。
该课程设计的目的:
磁盘初始化时把磁盘存储空间分成许多块(扇区),这些空间可以被多个用户共享。用户作业在执行期间常常要在磁盘上建立文件或把已经建立在磁盘上的文件删去,这就涉及到磁盘存储空间的分配和回收。一个文件存放到磁盘上,可以组织成顺序文件(连续文件)、链接文件(串联文件)、索引文件等,因此,磁盘存储空间的分配有两种方式,一种是分配连续的存储空间,另一种是可以分配不连续的存储空间。怎样有效地管理磁盘存储空间是操作系统应解决的一个重要问题,通过这个课程设计可以使我们更好地熟悉掌握磁盘存储管理的原理和分配与回收算法,进一步掌握软件开发方法并提高解决实际问题的能力。
原理与算法描述
我们组将题目中所给的方法分为连续存储空间法和链接存储空间法,并选取其中最具代表性的位示图法和UNIX成组链接法(连续存储与链接存储的结合)来进行代码的编写。
位示图法原理:
位示图用来指出磁盘块的使用情况,位示图中各个元素的取值只有“0”和“1”两种,其中“1”状态表示相应的磁盘块已经被占用,“0”状态表示该磁盘块空闲。申请磁盘块时,分配函数查询第一个空闲块所属的位置,然后从该位置往后选取对应数目的空闲块进行分配,将相应位置的位示图上相应元素置为“1”。为了编程方便,我们查阅资料,假设一个磁盘有8个柱面,每个柱面有2个磁道,每个磁道有4个物理记录。释放磁盘块时与分配磁盘块是相反的操作,由释放函数找到第一个空闲磁盘块,并从该位置往前一单位将被占用的相应数目的磁盘块释放,将位示图上相应元素置为“0”。
成组链接法原理:
成组链接法常应用于UNIX系统中,其主要思想是将结合顺序表和链表进行择优组合,即定义组内为顺序表,最大值为MAXGROUP,大于MAXGROUP的磁盘块另行分组,构成新的顺序表;但是这些顺序表之间用链表的结构进行连接,相当于添加一个新的节点。
开发环境
由于我们只是简单的对磁盘处理进行模拟,所以就在自己的个人PC上进行,用的IDE是DEV C++(Eclipse上JAVA写的界面被老师打回来了。。。)。
重要算法和设计思路描述
设计思路:
对于位示图法,我们就是定义一个矩阵用来可视化磁盘空间的使用情况,出于对控制台界面的考虑,我们将条件简化为:假设一个磁盘有3个柱面,每个柱面有2个磁道,每个磁道有4个物理记录,将矩阵简化为8*3的规模。然后分别建立process顺序表数据结构,存储申请的物理块信息;bitmap位示图类来存储位示图的数据和相应的操作,这些操作包括位示图二维数组bitmap[M][N]来存储位示图信息,Initbitmap()初始化位示图,spaceisok() 判断位示图是否合理,displaybitmap()用来打印位示图信息。
对于成组链接法,我们定义组结构体group和进程结构体process,定义顺序表最大值MAXGROUP为20,大于MAXGROUP的磁盘块另行分组,构成新的顺序表;但是这些顺序表之间用链表的结构进行连接,相当于添加一个新的group节点。用distribute()函数分配内存块,用recycle()函数撤消进程 ,回收内存块 。用·view()函数显示一些进程和数据结构的相应信息。
程序实现—数据结构
我们组选的题目是第17题:空闲磁盘存储空间的管理:简单方法
程序实现—程序清单
位示图法:
#include iostream
#include cstring
#include
using namespace std;
const int cylinder=3,track=2,sector=4;==0)
continue;
else
{
cout\nprocesstable[i].name\t\t processtable[i].n;
/*
fo
您可能关注的文档
最近下载
- ASTMA182-2015中文.PDF VIP
- 2025云南玉溪红塔实业有限责任公司员工招聘25人笔试备考试题及答案解析.docx VIP
- 2018湖北省施工机具使用费定额.pdf
- 25公安冲刺110考点 -更新版.pdf VIP
- 第三届全国生态环境监测专业技术人员大比武吉林省赛试题库资料(含答案).pdf
- (正式版)DB23∕T 3711-2024 《市县级矿产资源总体规划编制技术规程》.pdf VIP
- 工业设计审计报告范文.pdf VIP
- 丸红株式会社电子材料介绍.ppt VIP
- 2025年西式面点师(高级)实操技能与理论知识考核试题.docx VIP
- JBL_MS202 迷你桌面音响 说明书.pdf VIP
原创力文档


文档评论(0)