理工大学信息工程与自动化学院学生实验报告
( 2013 —2014 学年第一学期)
课程名称:操作系统开课实验室:信自楼444 2013年 11月28 日
注:报告容按下列的要求进行。
一、实验目的
通过编写固定分区存储管理的模拟程序,加深对操作系统存储管理功能中的固定分区管理方式、主存分配表等相应知识的理解。
通过编写和调试存储管理的模拟程序以加深对存储管理方案的理解,熟悉可变分区存储管理的存分配和回收。
二、实验题目
1.设计一个固定分区分配的存储管理方案。并模拟实现分区的分配和回收过程。
2.必须建立分区表,记录空闲区与占用区的状况。
本系统将存用户空间划分为五个大小不固定的分区,其分区大小由用户输入决定。在每个分区只装入一道作业,这样把用户空间划分为几个分区,便允许几道作业并发运行。当有一个空闲分区时,便可以从外存的后备队列中选择一个适当大小的作业装入该分区,当该作业结束时又可以从后备作业队列中找出另一作业调入该分区。
每个存空间是一个Node型的对象。Node类有一个三个参数的构造函数。分别为:分区号、起始地址、大小。然后就是一些属性的get、set方法和一个打印其属性的函数。四个数据域分别为:属性m_No用来表示该存空间的序号。属性m_Addr用来表示存分区的起始地址。属性m_Size用来表示存空间的大小。属性m_State表示存空间的是否已分配的状态标志。若该存空间已分配,m_TaskNo表示占有该存空间的任务序号。否则没有实际意义。
在用户申请任务的存空间时,提示用户输入任务号和其需要的存空间大小。
流程图
主程序:
释放存空间算法
四、算法设计的实现
1、类设计
本程序设计了两个比较简单的类:Node类和MManage类。Node类主要是存放每个固定分区的一些信息。而MManage类则主要是对Node类的容器List
类设计的数据成员和接口如下:
Node.h
#ifndef NODE_H
#define NODE_H
class Node
{
public:
Node(int No, int Addr, int Size);
int getSize() const