操作系统综合实验(终结版版)

上传人:kms****20 文档编号:40615870 上传时间:2018-05-26 格式:DOC 页数:15 大小:151KB
返回 下载 相关 举报
操作系统综合实验(终结版版)_第1页
第1页 / 共15页
操作系统综合实验(终结版版)_第2页
第2页 / 共15页
操作系统综合实验(终结版版)_第3页
第3页 / 共15页
操作系统综合实验(终结版版)_第4页
第4页 / 共15页
操作系统综合实验(终结版版)_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《操作系统综合实验(终结版版)》由会员分享,可在线阅读,更多相关《操作系统综合实验(终结版版)(15页珍藏版)》请在金锄头文库上搜索。

1、位数 4位数 4操作系统综合实验操作系统综合实验位示图法管理文件存储空间的分配与回收位示图法管理文件存储空间的分配与回收实验组成员 组长:葛加文 成员:周颜安 翟秋明 崔建奎一、实验目的 磁盘初始化时把磁盘存储空间分成许多块(扇区) ,这些空间可以被多个用户共享。用户作业 在执行期间常常要在磁盘上建立文件或把已经建立在磁盘上的文件删去,这就涉及到磁盘存储空 间的分配和回收。一个文件存放到磁盘上,可以组织成顺序文件(连续文件) 、链接文件(串联文 件) 、索引文件等,因此,磁盘存储空间的分配有两种方式,一种是分配连续的存储空间,另一种 是可以分配不连续的存储空间。怎样有效地管理磁盘存储空间是操作

2、系统应解决的一个重要问题, 通过本实验使学生掌握磁盘存储空间的分配和回收算法。 二、实验内容 位示图法管理文件存储空间的分配与回收 (1) 为了提高磁盘存储空间的利用率,可在磁盘上组织成链接文件、索引文件,这类 文件可以把逻辑记录存放在不连续的存储空间。为了表示哪些磁盘空间已被占用,哪些磁 盘空间是空闲的,可用位示图来指出。位示图由若干字节构成,每一位与磁盘上的一块对 应, “1”状态表示相应块已占用, “0”状态表示该块为空闲。位示图的形式与实习四中的 位示图一样,但要注意,对于主存储空间和磁盘存储空间应该用不同的位示图来管理,绝 不可混用。 (2) 申请一块磁盘空间时,由分配程序查位示图,

3、找出一个为“0”的位,计算出这一 位对应块的磁盘物理地址,且把该位置成占用状态“1” 。为了程序编写方便,假设现在有 一个盘组共 8 个柱面,每个柱面有两个磁道,每个磁道分成 4 个物理记录。那么,当在位 示图中找到某一字节的某一位为“0”时,这个空闲块对应的磁盘物理地址为:柱面号=字节号磁道号= 物理记录号= (3) 归还一块磁盘空间时,由回收程序根据归还的磁盘物理地址计算出归还块在位示 图中的对应位,把该位置成“0” 。按照(2)中假设的盘组,归还块在位示图中的位置计算 如下: 字节号=柱面号 位数=磁道号4+物理记录号 (4) 设计申请一块磁盘空间和归还一块磁盘空间的程序。要求能显示或打

4、印程序运行 前和运行后的位示图;分配时把分配到的磁盘空间的物理地址显示或打印出来,归还时把归还块对应于位示图的字节号和位数显示或打印出来。如下表所示:柱面号磁道号物理记录号001002010013100112表 1-1三、实验步骤 1、任务分析: (1)给出位示图初态 (2)程序人口参数:分配时:参数为文件名及需要分配的块数,回收时:参数为文件名。 (3)回答信息:分配时:能够分配时,给出文件名和分配的具体块号,否则,给出无法分配的信息。 显示位示图。回收时:给出回收的具体块号。显示位示图。 2、设计概要:void ReadMe() 程序说明及注释void Initbitmap() 位图初始化

5、void main() void allocate() 分配,自动void reclaim() 回收,指定回收void displaymap() 显示位示图程序流程图如下所示:Readme() Inithitmap()meuncinchoicechoice=1void allocate()输出入口参数、 文件名和块数choice=2void reclaim()输出入口参数、 文件名choice=3void displaymap()choice=0结束coutchoice;switch(choice)case 1:coutnamen;allocate(name,n);break;case 2:c

6、outname;reclaim(name);break;case 3:displaymap();break; case 0:exit(0);default:cout #include #include #include using namespace std;const int cylinder=8,track=2,sector=4; #define SIZE 100 const int M=cylinder,N=track*sector;void delay();/*延时效果*/ void ReadMe();/*本程序的一些说明信息*/ int bitmapisok();/*计算程序中的可分

7、配物理块数*/ void Initbitmap();/*初始化位示图*/ void allocate(char name10,int n);/*分配*/ void reclaim(char name10);/*回收*/ void displaymap();/*显示位示图*/struct fbc/*描述FBC的数据结构*/ char name10; int cSIZE,tSIZE,sSIZE; int n; ; fbc fbctableSIZE;/*FBC表*/ int bitmapMN;/*全局变量,位示图矩阵*/ int tablep=-1;/*全局变量,FBC扫描伪指针*/void delay()/延时2秒 time_t tm1,tm2; time( while (time( void ReadMe()/*程序相关说明信息*/ system(“color 0b“); coutchoice;switch(choice)case 1:coutnamen;allocate(name,n);break;case 2:coutname;reclaim(name);break;case 3:displaymap();break; case 0:exit(0);default:cout“错误选择!“;break;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号