logo资料库

操作系统位示图实验报告.docx

第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
资料共8页,全文预览结束
操作系统 位示图 磁盘管理
操作系统 位示图 磁盘管理 一、实验目的 怎样有效地管理磁盘存储空间是操作系统应解决的一个重要 问题,通过本实习使学生掌握磁盘存储空间的分配和回收算法。 二、实验内容 模拟磁盘空闲空间的表示方法,以及模拟实现磁盘空间的分 配和回收。 本实习模拟用位示图管理磁盘存储空间的管理方法。设计申请 一块磁盘空间和归还一块磁盘空间的程序。要求能显示或打印程 序运行前和运行后的位示图;分配时把分配到的磁盘空间的物理 地址显示或打印出来,归还时把归还块对应于位示图的字节号和 位数显示或打印出来。 假定已有如表 1 的磁盘空间被占用了,现在要申请五块磁盘空 间,运行分配程序,显示或打印运行的结果。然后再归还如表 2 的空间,运行回收程序,显示或打印运行结果。 表 1 柱面号 0 0 0 0 1 1 表 2 柱面号 0 0 1 磁道号 物理记录号 0 0 1 1 0 1 1 2 0 3 0 2 磁道号 物理记录号 0 1 0 2 0 1
三、实验步骤 本实验在 Visual C++ 6.0 编程平台下进行编程实现,详见实验 内容。 1. 算法设计流程,及源代码; 算法思想,及算法流程: 磁盘存储空间的分配有两种方式,一种是分配连续的存储空 间,另一种是可以分配不连续的存储空间。 为了表示哪些磁盘空间已被占用,哪些磁盘空间是空闲的,可 用位示图来指出。位示图由若干字节构成,每一位与磁盘上的一 块对应,“1”状态表示相应块已占用,“0”状态表示该块为空闲。 当申请一块磁盘空间时,由分配程序查位示图,找出一个为 “0”的位,计算出这一位对应块的磁盘物理地址,且把该位置成 占用状态“1”。假设现在有一个盘组共 80 个柱面,每个柱面有两 个磁道,每个磁道分成 4 个物理记录。那么,当在位示图中找到 某一字节的某一位为“0”时,这个空闲块对应的磁盘物理地址为: 柱面号=字节号 磁道号=[位数/4] 物理记录号={位数/4} 当归还一块磁盘空间时,由回收程序根据归还的磁盘物理地址 计算出归还块在位示图中的对应位,把该位置成“0”。归还块在 位示图中的位置计算如下: 字节号=柱面号 位数=磁道号4+物理记录号 源程序: #include #include #include
#define A 10 #define B 2 #define C 4 int koko[A][B][C]; int M,N; int i,j,k; char ch; void i_koko() { for(i=0;i>M; cout<<"请输入位数:"<<'\t'; cin>>N; i=M;j=N/4;k=N%4;
koko[i][j][k]=0; cout<<"是否继续输入(Y/N):"<<'\t'; cin>>ch; } while(ch=='Y'||ch=='y'); } void Recycle() { do{ cout<<"请输入柱面号"<<'\t'; cin>>i; cout<<"请输入磁盘号"<<'\t'; cin>>j; cout<<"请输入逻辑记录号"<<'\t'; cin>>k; koko[i][j][k]=1; cout<<"是否继续输入(Y/N):"<<'\t'; cin>>ch; } while(ch=='Y'||ch=='y'); } void Display() { int i,j,k; int flag=0;
cout<<"**位示图**"<
} cout<>x; cout<
i_koko(); while(1){KOKO();} } 2.编译、调试程序; 3.运行程序,记录结果。 假定已有如表 6-1 的磁盘空间被占用了,现在要申请五块磁盘 空间,运行分配程序。然后再归还如表 6-2 的空间,运行回收程序,。 4 1 1 4 0 1 5 1 1 5 1 1 6 1 1 6 1 0 7 1 1 7 0 1 (1)输出初始位图: 字/位 0 1 1 1 1 1 0 1 2 1 1 3 1 1 输出申请表 柱面号 磁道号 物理记录号 0 0 0 0 1 1 0 0 1 1 0 1 输出申请分配位示图 字/位 0 1 0 1 0 1 0 1 1 2 0 3 0 2 3 1 1 2 0 1 (2)输出回收表 柱面号 磁道号 物理记录号 0 0 1 0 1 0 输出回收后位示图 2 0 1
字/位 0 1 0 0 1 1 0 1 2 1 1 3 1 1 4 1 1 5 1 1 6 1 0 7 0 1 四、思考题 1. 此磁盘调度有哪些算法? 答:磁盘调度算法有:FCFS 算法、最短寻道时间优先 SSTF 算法、扫描算法(如:扫描 SCAN 算法、循环扫描 CSCAN 算法)。
分享到:
收藏