*******************
实践教学
*******************
兰州理工大学
计算机与通信学院
2009 年秋季学期
操作系统原理课程设计
题 目: 磁盘空间管理模拟实验
专业班级: 07
软件工程( 2 )班
姓 名: 杨 珍 民
学 号: 07250429
指导教师: 王 旭 阳
成 绩: ____________________
目 录
一. 问题描述............................................................................................................................4
设计总结..................................................................................................10
参考文献..................................................................................................11
致 谢......................................................................................................12
附录:部分源代码...................................................................................................................13
2
摘要
要把文件信息存放在存储介质上,必须先找出存储介质上可供使用的空闲
块。存储介质上某个文件不再需要时,又要收回它所占的存储空间作为空闲块
用户作业在执行期间经常要求建立一个新文件或撤消一个不再需要的文件,因
此,文件系统必须要为它们分配存储空间或收回它所占的存储空间。如何实现
存储空间的分配和收回,取决于对空闲块的管理方法,主要有两种对磁盘存储
空间的分配和收回的方法:位示图法(用一张位示图(简称位图)来指示磁盘
存储空间的使用情况), 空闲块链接法(在 UNIX 操作系统中,把磁盘存储空
间的空闲块成组链接)。
关键词:磁盘的分配和回收管理;位示图;成组链接。
3
正文
一. 问题描述
位示图法:一个简单的管理方法是用一张位示图(简称位图)来指示磁盘
存储空间的使用情况。一个盘组的分块确定后,根据分配的总块数决定位图由
多少个字组成,建筑位图中的每一位与盘组分块 1-1 对应,“1”状态表示相应块已占
用,“0”状态表示该块空闲。
成组链接法:首先定义磁盘分配数组并初始化,9 个一维数组分别表示 9 个
空闲块,程序运行时,先将专用块 A〔0〕复制到内存中,然后进行功能选择,
分配时,查 MA,从中找出空闲块号,当一组的空闲块只剩第一块时,应把该
块中指出的下一组的空闲块数和块号复制到专用块这,然后把该块分配给申请
者,当一组的空闲块分配完后则把专用块内容(下一组链接情况)复制到内存
再为申请者分配。 回收时,输入待回收的块号,查找该块是否已被分配,若未
分配,退出,否则,当前组不满规定块数时,将归还块登记入该组,若当前组
已满,则另建一新组,这时归还块作为新一组的第一块,应把内存中登记的一
组链接情况 MA 复制到归还块中,然后在 MA 这重新登记一个新组。显示分组
情况。系统初始化时先将专用块内容读入 内存 ,当有申请空闲块要求时,就直
接在内存专用块中找到哪些块是空闲的,每分配一块后把空闲块数减 1。但要
把一组中第一块分配出去之前,可以先把登记在该块中的下一组的块号保存在
专用块中(此时 ,原专用块中的信息巳经无用了 ,因它指示的一组空闲块都已
分配掉)。当中文组空闲块分配完后,则将下一组内容读入内存专用块中,以便继
续分配时查找。
二. 设计目的
通过该题目的设计过程,掌握磁盘存储管理的原理、软件开发方法并提高
4
解决实际问题的能力。学习使用位示图管理磁盘空间的分配与回收,了解程序
运行前和回收磁盘的物理地址过程。学会用模拟 UNIX 系统的成组链接法实现
磁盘空间的管理。了解 UNIX 的命令及使用格式,熟悉 UNIX/LINUX 的常用基
本 命 令 , 练 习 并 掌 握 UNIX 提 供 的 vi 编 辑 器 来 编 译 C 程 序 , 学 会 利 用
gcc、gdb 编译、调试 C 程序。希望通过本次设计过程可以提高自己的分析问
题的能力和实际动手的能力,将学到的知识用于实践中。
三.设计要求
(1) 位示图法
位示图是一张可以反映磁盘空间是否被占有的模拟图,用一个二维数组表
示磁盘的空间,数组内每一个元素表示磁盘内相应的分块,数组元素为“1”表示
该块已被占,“0”表示该块为空。数组元素位置与磁盘分块一一对应,即可描述
出磁盘空间的利用情况。
(2) 成组链接法
对于要求将磁盘存储空间的空闲块成组链接,我们可以设计几个相应的一
维数组,分别表示磁盘的各个磁盘,数组中的元素表示每个磁盘的分块,分配
时,通过查空闲表 MA,从中找出空闲块号,当一组的空闲块只剩第一块时,
应把该块中指出的下一组的空闲块数和块号复制到专用块这,然后把该块分配
给申请者,当一组的空闲块分配完后则把专用块内容(下一组链接情况)复制
到内存,再为申请者分配。 回收时,输入待回收的块号,查找该块是否已被分
配,若未分配,退出,否则,当前组不满规定块数时,将归还块登记入该组,
若当前组已满,则另建一新组,这时归还块作为新一组的第一块,应把内存中
登记的一组链接情况 MA 复制到归还块中,然后在 MA 这重新登记一个新组。
四. 详细设计
1. 界面设计
下图(1)为用位示图法分配一个磁盘空间后的状态图:
5