主内存空间分配和恢复实验报告.doc
- 格式:doc
- 大小:25.00 KB
- 文档页数:4
主内存空间分配和恢复实验报告
。操作系统实验报告实验[1]:
主存储空间的分配和名字的恢复;
贺兰雪诺。以下内容:
201306080215专业课:
132次实验时间:
2015.5.31报告时间:
2015.6.6分类:
计算机科学学院:
电气与信息工程学院实验三中主存储空间的分配与恢复
I .为实验内容分配和恢复主存储空间。
第二,实验目的一个好的计算机系统不仅要有足够的容量、高速的访问速度、稳定可靠的主存,还要能够合理地分配和使用这些存储空间。
当用户申请内存空间时,内存管理必须根据申请人的要求,按照一定的策略分析主内存空间的使用情况,并找出足够的空闲空间分配给申请人。当作业收回或主动返回主内存资源时,存储管理将回收作业占用的主内存空间或返回部分主内存空间。主存分配和恢复的实现与主存的管理模式有关。本实验帮助学生理解如何在可变分区管理模式下实现主存空间的分配和恢复。
第三,实验原理仿真采用第一种自适应算法实现可变分区管理模式下的内存分配和恢复。
(1)可变分区方法根据作业所需的主内存空间大小划分分区。当要加载作业时,根据作业所需的主库存检查是否有足够的可用空间,如果有,根据所需的数量划分分区并分配给作业;
否则,无法加载作业。随着作业的加载和卸载,主内存空间被分成许多分区,其中一些被作业占用,一些是空闲的。
例如:
05k10k14k26k32k512k操作系统作业1作业3自由区域作业2自由区域为了解释哪些区域是自由的,可以用来加载新作业,必须有一个自由区域描述表,格式如下:
起始地址长度状态的第一列14 K12 K没有被分配,第二列32 K96 K没有被分配给MMMM,其中起始地址——指示空闲区域的主存储器起始地址。长度——表示从起始地址开始的连续空闲长度。状态——有两种状态,一种是“未分配”状态,这表示由起始地址指示的某一长度的相应区域是空闲区域。(2)当新作业需要加载到主存储器中时,必须检查空闲区域描述表以找到足够大的空闲区域。有时找到的自由面积可能大于工作要求,原始自由面积应改为两部分: 它的一部分被分配给占领行动;
另一部分成为一个较小的自由区域。为了尽可能地减少由分区引起的空闲区域,并尽可能地在高地址部分保留大的连续空闲区域,以便于大规模作业的加载。为此,在空闲区描述表中,每个空闲区都按其地址顺序登记,也就是说,每个后续空闲区的起始地址总是大于前者。(3)使用第一个自适应算法(顺序分配算法)来分配主内存空间。根
据作业要求,检查自由区描述表,依次检查登记栏,找到第一个符合要求的自由区。当空闲区域大于所需数量时,一部分用于加载作业,而另一部分仍然注册在空闲区域的空闲区域描述表中。由于这个实验模拟了主内存的分配,在主内存区域被分配给作业之后,加载器实际上并没有开始加载作业,而是使用输出“分配”。(4)当作业执行后被疏散时,作业所占据的区域应被返回。如果返回的区域与其他自由区域相邻,则应将其合并为一个更大的自由区域,并在自由区域描述表中注册。(5)请根据第一个自适应算法设计主内存分配和恢复程序。假设开始时主内存中没有作业,内存的应用和释放将按照以下顺序进行:
作业1适用于300K,作业2-省略部分-主内存空间的分配和回收' op;if(op=='a'||op=='A') { int名称;int大小;cout名称;cin尺寸;T.do_request(名称、大小);print _ free();}否则,如果(op=='b'||op=='B') { int名称;cout名称;T.do_revoke(名称);print _ free();}否则如果(op==' C ' | | op==' C '){ print _ task();}否则,如果(op==' 0 '){ break;否则{ cout }非法操作!endl} char concout conif(con==' N ' | | con==' N '){ quit=true;}系统(“cls”);}}
六、打印程序运行时的初始值和运行结果
七、实验总结模拟在可变分区管理模式下使用第一个自适应算法来实现主内存分配和恢复,整个程序由两个类构成其主体,自由区类和应用空间类。使整个程序更加结构化。该程序在编写过程中也遇到了许多问题,但幸运的是,它在查询了各方面的信息后得到了解决。
每个程序的成功编写都是一个困难的项目,不仅要测试能力,还要测试思维。单词模型;