固定分区存储管理

上传人:新** 文档编号:493139323 上传时间:2023-02-16 格式:DOCX 页数:16 大小:189.39KB
返回 下载 相关 举报
固定分区存储管理_第1页
第1页 / 共16页
固定分区存储管理_第2页
第2页 / 共16页
固定分区存储管理_第3页
第3页 / 共16页
固定分区存储管理_第4页
第4页 / 共16页
固定分区存储管理_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《固定分区存储管理》由会员分享,可在线阅读,更多相关《固定分区存储管理(16页珍藏版)》请在金锄头文库上搜索。

1、昆明理工大学信息工程与自动化学院学生实验报告) 学期 一(2013 2014 学年第日11月28课程名称:操作系统开课实验室:信自楼444 2013年级、专业、班 Ndefault:抛出异常,将用提示用户是 否继续操作(Y/N) 户输入存放在变量yesorno 中&yesorno!=n YNyesorno!= N结束-3-Ytemp2赋值为 第i个内存空 问大小与申请 的内存空间大 小只差Temp1temp2?YNo保存内存空间号到Temp1=temp2.-4-NY物联网2011 级MManageX寸象, 创建 5.长度为 提示用户输入作 业名和作业占的 内存大小学号 内存 空间姓名成 绩实验

2、项目名称 将内存空间闲固定分区存储管理No置为空释放失败指导教 师教 师 评 语Y N Y不了解口基本了解口 C.B.该同学是否了解实验内容与要求:A. 了解口设计思想或流程图是否正确:口较差B.基本正确口 C. A.正确口该同学的实验能力:差B.中等 C. A. 强口 口 达到口 A.未达 到UB.基本达到口 C.该同学的实验是否达到要求:规范口 B.基本规范口 C.不规范口 A.实验报告是否规范: 是否有运行结果与 分析: 详细 口 B. 一般UC.没有 A.详细口 C. 一般B. 没有口 A. 是否有总结与体会:教师签名:日月年 让用户手工输入每个分区大小,来初始化内存空间、提示用户输入

3、他的选择:1申请内存空间2将用户输入存放入 释放内存空间。swt变量swt!=1 swt!=2?并且进行任务的内存 Swt=1? 空间分配操作执行分配给任务的内Swt=2?检查该任务号是否已经存在,100或该任务大小是否超过该任务号已经存在或100该任务大小否超过 是否i的变量,0初值为 小于节点队列大小个内存空闲并且其大第i将内存空间No置为占申请失败并将作业分配给它有,打印出内存空间信息结束开始提示用户输入作业名打印出内存空间信息结束注:报告内容按下列的要求进行。实验目的一、通过编写固定分区存储管理的模拟程序,加深对操作系统存储管理功能中的固定分区管理方式、主存分配表等相应知识的理解。通过

4、编写和调试存储管理的模拟程序以加深对存储管理方 案的理解,熟悉可变分区 存储管理的内存分配和回收。实验题目二、设计一个固定分区分配的存储管理方案。 并模拟实现分区的分配和回收过程。1.必须建立分区表,记录空闲区与占用区的状况。2.流程图按选定的算法自己完成。3.-1 -三、算法设计的思想或流程图本系统将内存用户空间划分为五个大小不固定的分区,其分区大小由用户输入 决定。在每个分区只装入一道作业,这样把用户空间划分为几个分区,便允许几 道作业并发运行。当有一个空闲分区时,便可以从外存的后备队列中选择一个适 当大小的作业装入该分区,当该作业结束时又可以从后备作业队列中找出另一作 业调入该分区。每个

5、内存空间是一个Node型的对象。Node类有一个三个参数的构造函数。分别 为:分区号、起始地址、大小。然后就是一些属性的 get、set方法和一个打印 其属性的函数。四个数据域分别为:属性 m_Nog来表示该内存空间的序号。属 性m_Addr用来表示内存分区的起始地址。属性m_Size用来表示内存空间的大小。 属性m_State表示内存空间的是否已分配的状态标志。若该内存空间已分配, m_TaskNOfe示占有该内存空间的任务序号。否则没有实际意义。前户申请任务的内存空间时,提示用户输入任务号和其需要的内存空间大小流程图主程序:-2-开始存空间分释放操作分配内存空间算法:开始i+No= -1

6、?释放内存空间算法初值为0的变量i,是否小于节点队列大小第i个内存占有并且其作 业号等于输入的作业号No保存内存空间号到-5-No= -1 ?四、算法设计的实现、类设计1类主要是存放每个固本程序设计了两个比较简 单的类:Node类和NodeMManag。进行一些操作来实 NodeMManage分区的 一些信息。而类则主要是对类的容器List现要求的内存空间的的分配和 释放。类设计的数据成员和接口如下:Node.h#ifndef NODE_H#define NODE_Hclass Nodepublic:Node(int No, int Addr, int Size);-6-int getSize

7、() 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_State;int m_TaskNo;#endif /NODE_H-7-MManage.h#ifndef MMANAGE_H#define MMANAGEH #include

8、class Node;class MManagepublic:/MManage();MManage(int MLength);MManage(std:vector Nodes);void MAlloc();void MFree();void print();private:std:vector m_Nodes;-8;#endif/MMANAGE_H类接口实现和 main 函数的实现:Node.cpp#include #include Node.hNode:Node(int No, int Addr, int Size):m_No(No),m_Addr(Addr),m_Size(Size)m_S

9、tate = true;m_TaskNo = 0;void Node:setTaskNo(int TaskNo) m_TaskNo = TaskNo;-9-void Node:setState(bool State) m_State = State;void Node:print() std:cout| m_No | m_Addr | m_Size | ;if(m_State)std:coutIdle |std:endl;elsestd:coutOccupy | m_TaskNo |std:endl;MManage.cpp #include #include MManag.h#include

10、Node.h #define MAXSIZE 100-10-/class Node;/*MManage:MManage() int sum;std:cout sum;std:cout std:endl;MManage(sum);*/MManage:MManage(int MNo)int size;int addr = 0;char yesOrNo = n;while ( yesOrNo != y & yesOrNo != Y)m_Nodes.clear();std:cout Start to init the memory table std:endl;for (int i=0; iMNo;

11、+i)do-11-std:cout Please input the size of i+1 size;while(size = MAXSIZE);Node node(i+1, addr, size);m_Nodes.push_back(node);addr+=size;print();std:cout Is this correct? yesOrNo;MManage:MManage(std:vector Nodes) m_Nodes.assign(Nodes.begin(), Nodes.end();void MManage:MAlloc()int taskNo, size;int No =

12、 -1;int temp1 = MAXSIZE;-12-int temp2 = MAXSIZE;bool flag;doflag=false;std:cout Please input the task No. and size taskNo size;for(unsigned i=0; im_Nodes.size(); +i)if(m_Nodesi.getTaskNo() = taskNo)std:coutThis task areally exist,please change it MAXSIZE)std:coutThe size is too big,please change its

13、td:endl;flag = true;while(flag);for(unsigned i=0; i=size)-13-temp2 = m_Nodesi.getSize() - size;if(temp2temp1)temp1 = temp2;No = i;if(No=-1)std:cout Allocation fail. std:endl;elsestd:cout Allocation success. std:endl;m_NodesNo.setState(false);m_NodesNo.setTaskNo(taskNo);void MManage:MFree()int taskNo,No=-1;-14-std:cout

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 营销创新

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号