动态分区分配存储管理系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

动态分区分配存储管理系统

学院

专业

学号

学生姓名

指导教师姓名

2014年3月19 日

一、课题要求

课程设计的目的:

操作系统课程设计是计算机专业重要的教学环节,它为学生提供了一个既动手又动脑,将课本上的理论知识和实际有机的结合起来,独立分析和解决实际问题的机会。

● 进一步巩固和复习操作系统的基础知识。

● 培养学生结构化程序、模块化程序设计的方法和能力。

● 提高学生调试程序的技巧和软件设计的能力。

● 提高学生分析问题、解决问题以及综合利用C 语言进行程序设计的能力。

设计内容:

用高级语言编写和调试一个动态分区内存分配程序,演示实现下列两种动态分区分配算法

1. 首次适应算法

2. 循环首次适应算法

设计要求:

1. 内存中有0-100M 的空间为用户程序空间,最开始用户空间是空闲的

2. 作业数量、作业大小、进入内存时间、运行时间需要通过界面进行输入

3. 可读取样例数据(要求存放在外部文件中)进行作业数量、作业大小、进入内存

时间、运行时间的初始化

4. 根据作业进入内存的时间,采用简单的先进先出原则进行从外存到内存的调度,

作业具有等待(从外存进入内存执行)、装入(在内存可执行)、结束(运行结束,

退出内存)三种状态。(为了简化,不考虑CPU 的调度与切换,运行时间为作业

在内存中驻留的时间)

5. 能够自动进行内存分配与回收,可根据需要自动进行紧凑与拼接操作,所有过程

均有动态图形变化的显示

6. 采用可视化界面,可随时暂停显示当前内存分配和使用情况图。

设计结束需提交下列资料:

1、课程设计报告。报告中至少应包括:相关操作系统的知识介绍,程序总的功能说明、程序各模块的功能说明、程序设计的流程图、源程序清单。

2、源程序和编译连接后的可执行程序文件。

时间安排:

分析设计贮备阶段(1 天)

编程调试阶段(7 天)

写课程设计报告、考核(2 天)

二、算法思想

1、定义基本结构:

1作业结构:

typedef struct JOB

{

int num; //作业号

int size; //作业大小

int ctime; //作业进入时间

int rtime; //作业运行时间

int state; //作业状态

}Job

;

2)分区结构:

typedef struct DuLNode

{

int ID; //分区号

int start; //开始地址

int size; //大小

int state; //0=尚未使用1=使用2=释放

struct DuLNode *prior;//前向指针

struct DuLNode *next; //后向指针

}DuLNode, * DuLinkList;

2、基本操作:

int Firstfit(int);//首次适应算法

int Next_fit(int); //循环首次适应算法

void showJob(int); //显示作业表

void showPartiton(DuLinkList);//显示分区表

DuLinkList InitpartitionList(DuLinkList &p);//初始化

void huishou(DuLinkList pl3,DuLinkList &pl);//回收函数

int Putin(int &n);//输入函数,输入作业相关信息

3、首次适应算法

空闲分区链以地址递增的次序链接,分配内存时,从链首开始顺序查找,直至找到一个大小能满足要求的空闲分区为止;然后再按照作业的大小,从该分区中划出一块内存空间分配给请求者,取消的空闲分区仍留在空闲链中。若从链首直至链尾都不能找到一个能满足要求的分区,则此次内存分配失败,返回。

4、循环首次适应算法

在为进程分配内存空间时,不再是每次都从链首开始查找,而是从上次找到的空闲分区的下一个空闲分区开始查找,直至找到一个能满足要求的空闲分区,从中划出一块与请求大小相等的内存空间分配给作业。

三、主要功能模块流程图主函数:

首次适应算法:循环首次适应算法

四、系统测试

1、输入界面

2、首次适应算法:

3、循坏首次适应算法:

五、源程序

#include

#include

#include

#include

#define Free 0

#define Use 1

#define MAX_length 100 //最大内存空间为100MB

//--------------作业结构体数组----------------------------

typedef struct JOB

{

int num; //作业号

int size; //作业大小

int ctime; //作业进入时间

int rtime; //作业运行时间

int state; //作业状态

}Job;

typedef struct DuLNode

{

int ID; //分区号

int start; //开始地址

int size; //大小

int state; //0=尚未使用1=使用2=释放

struct DuLNode *prior;//前向指针

struct DuLNode *next; //后向指针

}DuLNode, * DuLinkList;

//-------------------------------------------------------------------------------

相关文档
最新文档