模拟实现用位示图法管理制度文件存储空间的分配与回收.doc
文本预览下载声明
石河子大学
计算机科学与技术系
课程名称 操作系统原理 课程设计名称 位示图方法模拟磁盘块的分配与回收 专 业 班 级 10计科1班 学生姓名 蒋健波 学 生 学 号 2010508034 指 导 教 师 高新奇 实验题目 模拟用位示图法管理文件存储空间的分配与回收
实验目的:理解基本概念,掌握产生的几种方法,体会算法是的一种行之有效的方法。通过编写程序实现算法,进一步理解算法的原理和过程,掌握算法的描述和应用,进一步熟练掌握的方法。实验内容
(1)首先对算法原理进行深刻的理解和掌握;
(2实验环境
,
1、初始化及使用数据结构
对数组WST[]元素初始化为0。定义以下3个链表并初始化。空闲区结构体定义free_link、申请空间作业结构体定义office、相关位示图操作的结构体定义work。
位示图算法是利用二进制的一位来表示磁盘中的一个盘块的使用情况。在外存上建立一张位示图(bitmap),记录文件存储器的使用情况。每一位仅对应文件存储器上的一个物理块,取值0和1分别表示空闲和占用。文件存储器上的物理块依次编号为:0、1、2、…。定义为一维数组WST[],操作起来更为方便。下表号与盘块号对应。在输出的时候控制输出为二维形式。
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 1 1 0 0 0 1 1 1 0 0 1 0 1 1 1 0 1 0 0 0 1 1 1 1 1 1 0 0 0 0 1 1 1 2 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 0 3 ┇ 15 位示图 WST[i]=1;
3、回收空间算法
首先输入文件名,查找申请空间作业链表找到该作业。找到该作业时回收该盘块。回收时要判断盘块前后的是否为空。决定回收的盘块来加入哪个空闲区。
(1)if((WST[s-begin_location-1]==0WST[s-begin_location+s-office_number]==1s-begin_location-1=0)||(WST[s-begin_location-1]==0s-begin_location+s-office_number==256s-begin_location-1=0)){//前面为空盘块区,后面为已分配,并入前面
(2)if((WST[s-begin_location-1]==1WST[s-begin_location+s-office_number]==0s-begin_location+s-office_number256)||(s-begin_location==0WST[s-begin_location+s-office_number]==0s-begin_location+s-office_number256)){//后面为空盘,并入后面区域
(3)if(WST[s-begin_location-1]==0WST[s-begin_location+s-office_number]==0s-begin_location-1=0s-begin_location+s-office_number256){//前后都空,合为一个空盘区
(4)if((WST[s-begin_location-1]==1WST[s-begin_location+s-office_number]==1s-begin_location-1=0s-begin_location+s-office_number256)||(s-begin_location==0WST[s-begin_location+s-office_number]==1s-begin_location+s-office_number256)||(WST[s-begin_location-1]==1s-begin_location+s-office_number==256s-begin_location-1=0)||(s-begin_location==0s-begin_location+s-office_number==256)){//要回收的区域自成一个空盘结点
4.各算法流程图
盘块的分配:
否
是
否
是
否
是
盘块的回收:
是
是
否
是
否
是
否
是
五、记录实验结果并分析
1、在dos窗口界面下,我们看到的如下所示,这是程序初始化时出现的界面:
2现在我们对其进行操作:选择1—分配文件,出现如下界面:
我们不妨设文件名位“caozuoxitong”,并令块数为10,执行,得到如下的界
显示全部