固定分区存储管理_第1页
固定分区存储管理_第2页
固定分区存储管理_第3页
固定分区存储管理_第4页
固定分区存储管理_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

昆明理工大学信息工程与自动化学院学生实验报告(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变量中PS!=1PS!=2?进行任务的内存空间分配操作Swt=1?ySwt=2?n执行分配给任务的内存空间的释放操作y从default:抛出了异常n提示用户继续操作(Y/N ),将用户输入保存到变量yesorno中yesorno!=nyessorno!=nyn结束。内存区域的分配算法:开始。指示用户输入作业名称和作业所占的内存大小。检查任务编号是否已经存在,或者任务大小是否超过100任务编号是否已经存在,任务大小是否超过100初始值为0的变量I是否小于节点队列大小第I个内存是空闲的,大于作业请求的大小ytemp2的值与请求的第I个内存区域大小稍有不同yTemp1执行一些操作,以实现必要的内存空间分配和释放。类设计的数据成员和接口如下节点. h#ifndef NODE_H#define NODE_H等级节点举止公共:节点(int no,int Addr,int Size )int getSize() const举止return m_Size;以下bool getState() const举止return m_State;以下int getTaskNo() const举止return m_TaskNo;以下void setstate (球状态)void setTaskNo(int TaskNo )void print ();私有:int m_No;int m_Addr;int m_Size;bool m_State;int m_TaskNo;#endif /NODE_Hmmanager.h#ifndef MMANAGE_H#define MMANAGE_H#include等级节点;类m管理举止公共:/MManage ();m manage (内部长度)m manager (STD :6030 vector nodes )void MAlloc ();void MFree ();void print ();私有:std:6030vectorm_nodes;#endif/mmanager_h类接口的实现和main函数的实现:节点. CPP#include#include Node.h 节点:30节点(intno、int Addr、int Size ):m_no,m_addr,m_Size(Size )举止m_State=true;m_TaskNo=0;以下void node :3360 settaskkno (inttaskkno )举止m_TaskNo=TaskNo;以下void node :3360 setstate (球状态)举止m_State=State;以下void node :3360打印()举止std:6030cout|#include MManag.h #include Node.h #define MAXSIZE 100/class Node;/*MManage:MManage ()举止int sum;STD 33603360 coutpleaseintethenumberofmemory :;std:6030cinsum;STD 33605360 cout STD :5360 endl;m manage (和)以下*/MMA manage :3360 m manager (int MnO )举止int size;int addr=0;char yesOrNo=n;PS (yeso rno!=y yesOrNo!=Y )举止m_Nodes.clear ();STD :5360 coutstarttosinitthememorytableSTD :5360 endl;for (int i=0; i size;while(size=MAXSIZE )节点(I 1,addr,size )m_Nodes.push_back(node )addr=size;以下print ();std:cout Is this correct? “”std:6030endl;std:6030cinyessorno;以下以下m manage :5360 m manager (STD :5360 vector nodes )举止m_Nodes.assign(Nodes.begin ()、Nodes.end ();以下void MManage:MAlloc ()举止int taskNo,size;int No=-1;int temp1=MAXSIZE;int temp2=MAXSIZE;布尔标志;do 1222222222222222222226标志=假;STD :3360 coutpleaseinputthetaskno.andsizeSTD :5360 endl;s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论