动态分区存储管理实验报告.docVIP

  • 1
  • 0
  • 约5.66千字
  • 约 11页
  • 2023-10-11 发布于湖北
  • 举报
数学计算机科学学院实验报告 专业名称 软件开发已应用 实 验 室 学苑楼2#202 实验课程 计算机操作系统 实验名称 动态分区存储管理 姓 名 ____ 杨剑_______ 学 号 ___0915266______ 同组人员 _____ 无________ 实验日期 ____2011/5/23___ 一、【实验目的】: 1、熟悉主存分配与回收 2、理解在不同的存储管理方式,如何实现主存空间的分配与回收 3、掌握动态分区分配方式中的数据结构和分配算法及动态分区存储管理方 式及其实现过程。 二、【实验内容和要求】: 主存的分配和回收的实现是与住存储器的管理方式有关的。所谓分配,就是解决多进程如何共享主存空间的问题。所谓回收,就是当进程运行完时将进程所占的主存空间归还给系统。 实验要求使用可变分区存储管理方式,分区分配中所用的数据就够采用空闲分区说明表和空闲分区链表来进行,分区分配中所用的算法采用首次适应算法、循环首次适应算法、最佳适应算法、三种算法来实现主存的分配与回收。 同时要求设计一个实用友好的可视化用户界面,并显示分配与回收过程。 三、【实验原理】 实验中为有效地对内存进行管理,实验中应设计一些数据结构,能有效地进行分配和回收,具体分析如下: 设计一个空闲分区表,空闲分区表通过空闲分区链表来管理,在进行内存分配时,系统优先使用空闲分区低端的空间。 设计一个内存分区表,可用链表管理,用以表示当前以内存使用情况。 设计一个进程申请队列以及进程完成后的释放顺序,实现主存的分配和回收。 要求每次分配和回收后把空闲分区的变化情况以及各进程的申请、释放情况以及各进程的申请、释放情况以图形方式显示、打印出来。 四、【实验环境】(使用的软件) Microsoft Visual C++ 6.0 五、【实验设计分析】: 内存分配: ①动态输入构造空闲区表,并显打印示构造好的空闲分区表。 ②键盘接收内存申请。 ③根据申请,实施内存分配,并返回分配所得内存首址。 ④分配完后,调整空闲分区表(即扣除分配部分),并显示调整后的空闲分区表。 ⑤若分配失败,返回分配失败信息。 内存回收: ①显示当前的空闲分区表和内存分区表。 ②从键盘接收回收分区的首址与大小,按内存回收的四种情况进行内存回收。 ③显示回收后已调整好的的空闲分区表 六、【实验过程和步骤】: ● 数据结构设计 空闲分区表的设计,该空闲分区表记录内存中未使用的各个分区,记录内容有未使用分区的大小、首地址,用链表就行管理;相关代码如下: Typedef struct free { Int size; //分区大小 Int address;//首地址 free *next; }; ②内存分区表设计,用以表示当前内存的使用情况,记录内容已使用分区的大小、首地址,用链表进行管理,相关数据结构如下: Typedef struct map { Int size; //分区大小 Int address;//首地址 map *next; }; ③进程申请队列的设计,用作进程到达的缓冲队列,记录各进程的相关信息,如进程的所需内存的大小、进程名,相关数据结构如下: Typedef struct pro { Int size; //分区大小 sring name; pro *next; }; 内存分配 当有进程进行内存申请时,我们利用首次适应算法从空闲分区链表、找出一块做够大的空间进行分配并对空闲分区和内存分区的相关结点进行处理,若未找到则返回错误信息,相关示意图如下: 内存回收 内存的回收存在以下几种情况: ①上邻空闲区:合并两分区,删除正回收的节点,改变上邻分区大小为两分区之和 ②下邻空闲区:合并两分区,删除下邻分区节点,改变正回收节点大小为两分区之和,改变正回收节点的首址。 ③上、下邻空闲区:合并三分区,删除下邻分区和正在回收节点,改变上分区节点大小为

文档评论(0)

1亿VIP精品文档

相关文档