固定分区存储管理
固定分区存储管理 昆明理工高校信息工程与自动化学院学生试验报告 ( 2013 —2014 学年第 一 学期 ) 课程名称:操作系统 开课试验室:信自楼444 2013年 11月28 日 年级、专业、班 物联网2011级 学号 姓名 成果 试验项目名称 固定分区存储管理 指导老师 老师评语 该同学是否了解试验内容与要求:A.了解□B.基本了解□C.不了解□ 设计思想或流程图是否正确: A.正确□B.基本正确□C.较差 □ 该同学的试验实力: A.强 □B.中等 □C.差 □ 该同学的试验是否达到要求: A.达到□B.基本达到□C.未达到□ 试验报告是否规范: A.规范□B.基本规范□C.不规范□ 是否有运行结果与分析: A.具体□B.一般 □C.没有 □ 是否有总结与体会: A.具体□B.一般 □C.没有 □ 老师签名: 年 月 日 注:报告内容按下列的要求进行。 一、 试验目的 通过编写固定分区存储管理的模拟程序,加深对操作系统存储管理功能中的固定分区管理方式、主存安排表等相应学问的理解。 通过编写和调试存储管理的模拟程序以加深对存储管理方案的理解,熟识可变分区存储管理的内存安排和回收。 二、 试验题目 1. 设计一个固定分区安排的存储管理方案。并模拟实现分区的安排和回收过程。 2. 必需建立分区表,记录空闲区与占用区的状况。 3. 流程图按选定的算法自己完成。 三、 算法设计的思想或流程图 本系统将内存用户空间划分为五个大小不固定的分区,其分区大小由用户输入确定。在每个分区只装入一道作业,这样把用户空间划分为几个分区,便允许几道作业并发运行。当有一个空闲分区时,便可以从外存的后备队列中选择一个适当大小的作业装入该分区,当该作业结束时又可以从后备作业队列中找出另一作业调入该分区。 每个内存空间是一个Node型的对象。Node类有一个三个参数的构造函数。分别为:分区号、起始地址、大小。然后就是一些属性的get、set方法和一个打印其属性的函数。四个数据域分别为:属性m_No用来表示该内存空间的序号。属性m_Addr用来表示内存分区的起始地址。属性m_Size用来表示内存空间的大小。属性m_State表示内存空间的是否已安排的状态标记。若该内存空间已安排,m_TaskNo表示占有该内存空间的任务序号。否则没有实际意义。 在用户申请任务的内存空间时,提示用户输入任务号和其须要的内存空间大小。 流程图 主程序: 起先 创建MManage对象,内存空间长度为5. 让用户手工输入每个分区大小,来初始化内存空间 提示用户输入他的选择:1、申请内存空间 2、释放内存空间。 将用户输入存放入swt变量 swt!=1 并且swt!=2? 进行任务的内存空间安排操作 Swt==1? Y Swt==2? N 执行安排给任务的内存空间分释放操作 Y default:抛出异样 N 提示用户是否接着操作(Y/N),将用户输入存放在变量yesorno中 yesorno!=’n’ int getSize() const { return m_Size; } bool getState() const { return m_State; } int getTaskNo() const { return m_TaskNo; } void setState(bool State); void setTaskNo(int TaskNo); void print(); private: int m_No; int m_Addr; int m_Size; bool m