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

上传人:b****6 文档编号:15384061 上传时间:2023-07-04 格式:DOCX 页数:56 大小:79.98KB
下载 相关 举报
动态分区分配存储管理系统.docx_第1页
第1页 / 共56页
动态分区分配存储管理系统.docx_第2页
第2页 / 共56页
动态分区分配存储管理系统.docx_第3页
第3页 / 共56页
动态分区分配存储管理系统.docx_第4页
第4页 / 共56页
动态分区分配存储管理系统.docx_第5页
第5页 / 共56页
动态分区分配存储管理系统.docx_第6页
第6页 / 共56页
动态分区分配存储管理系统.docx_第7页
第7页 / 共56页
动态分区分配存储管理系统.docx_第8页
第8页 / 共56页
动态分区分配存储管理系统.docx_第9页
第9页 / 共56页
动态分区分配存储管理系统.docx_第10页
第10页 / 共56页
动态分区分配存储管理系统.docx_第11页
第11页 / 共56页
动态分区分配存储管理系统.docx_第12页
第12页 / 共56页
动态分区分配存储管理系统.docx_第13页
第13页 / 共56页
动态分区分配存储管理系统.docx_第14页
第14页 / 共56页
动态分区分配存储管理系统.docx_第15页
第15页 / 共56页
动态分区分配存储管理系统.docx_第16页
第16页 / 共56页
动态分区分配存储管理系统.docx_第17页
第17页 / 共56页
动态分区分配存储管理系统.docx_第18页
第18页 / 共56页
动态分区分配存储管理系统.docx_第19页
第19页 / 共56页
动态分区分配存储管理系统.docx_第20页
第20页 / 共56页
亲,该文档总共56页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

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

《动态分区分配存储管理系统.docx》由会员分享,可在线阅读,更多相关《动态分区分配存储管理系统.docx(56页珍藏版)》请在冰点文库上搜索。

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

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

 

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

 

学院

专业

学号

学生姓名

指导教师姓名

 

2014年3月20日

 

目录

1设计目的------------------------------------------------------3

2设计内容------------------------------------------------------3

3设计要求------------------------------------------------------3

4程序总体功能说明---------------------------------------------3

5程序各模块功能说明-------------------------------------------4

6程序设计流程图------------------------------------------------5

7系统测试------------------------------------------------------8

8程序代码-----------------------------------------------------19

9课设总结-----------------------------------------------------34

 

一、设计目的

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

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

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

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

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

 

二、设计内容

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

1.首次适应算法

2.循环首次适应算法

 

三、设计要求

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

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

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

4.根据作业进入内存的时间,采用简单的先进先出原则进行从外存到内存的调度,作业具有等待(从外存进入内存执行)、装入(在内存可执行)、结束(运行结束,退出内存)三种状态。

(为了简化,不考虑CPU的调度与切换,运行时间为作业在内存中驻留的时间)

5.能够自动进行内存分配与回收,可根据需要自动进行紧凑与拼接操作,所有过程均有动态图形变化的显示

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

 

四、程序总体功能说明

本程序可以从界面直接输入作业并进行动态的内存分配,也可以自动地生成作业文件并自行调度进行内存分配,每次分配可以选择两种算法(首次适应算法和循环首次算法)中的一种,每次作业结束后可以进入操作主界面进行再次作业的操作。

首次适应算法:

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

若从链首直至链尾都不能找到一个能满足要求的分区,则此次内存分配失败,返回。

循环首次适应算法:

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

五、程序部分模块功能说明

(1)随机产生文件:

voidRandomParameter()//将随机产生进程的参数写入文件

{

openFile();

srand((unsigned)time(NULL));//初始化随机函数种子

for(inti=0;i

{

fprintf(fp,"%d%d%d%d%d\n",i+1,rand()%80,rand()%20,rand()%10+1,0);

}

fclose(fp);

}

(2)界面显示函数:

showInterface(PLp,Jobjob);显示操作界面

showJob(Jobjob);显示作业链表;

showPartitiion(PLpl)显示分区链表

(3)执行练习的功能函数:

copyJob(Jobp);作业链表复制函数函数

InitpartitionList(PL&p);链表初始化分区函数函数

CreateJoblist(Job&job,intcount);创建作业链表函数

InsertNode(Jobp,Job&job);按时间顺序创建链表函数

InitpartitionList(PL&p);初始化分区链表函数

(4)结构体数组

typedefstructjobList

{

intid;//作业名

intsize;//作业所需的存储空间大小

intintime;//作业进入时间

intruntime;//作业运行时间

intstate;//作业状态(0表示等待,1表示执行,2表示结束并释放)

structjobList*next;//作业链表指针

}*Job;

typedefstructpartitionList

{

intid;

intstartAddress;//分区起始地址

intsize;//分区大小

intstate;//分区状态

structpartitionList*prior;//前驱指针

structpartitionList*next;//后继指针

}*PL;

FILE*fp;

六、程序设计流程图:

总体设计流程图:

 

首次适应算法:

循环首次适应算法:

七、系统测试

在vc++6.0环境中运行本程序,先进行编译,然后再进行链接,在进行执行将会出现显示界面。

按照显示界面上显示的提示进行操作,就可以实现相应的功能。

1、从界面输入

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

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

~~~~~~~~~~~~~~~~~~~~~首次适应算法~~~~~~~~~~~~~~~~~~~~~

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

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

请选择作业生成方式:

1----->界面输入作业:

2----->文件自动生成:

3----->退出系统:

1

请输入作业数目:

3

作业信息输入:

作业号:

1

作业大小:

10

作业进入时间:

1

作业运行时间:

3

作业信息输入:

作业号:

2

作业大小:

20

作业进入时间:

2

作业运行时间:

3

作业信息输入:

作业号:

3

作业大小:

10

作业进入时间:

2

作业运行时间:

1

将作业按进入时间排序表示:

******************************************

*idsizeintimeruntimestate*

******************************************

*110130*

*310210*

*220230*

******************************************

1.首次适应算法

2.循环首次适应算法

3.退出

(首次适应算法)

请选择算法或退出:

1

请输入分区首地址:

1

时钟:

0

时钟:

1

开始对作业id:

1进行分配!

将作业按进入时间排序表示:

******************************************

*idsizeintimeruntimestate*

******************************************

*110131*

*310210*

*220230*

******************************************

***************************************

*StartAddridsizestate*

***************************************

*11101*

*110900*

***************************************

时钟:

2

开始对作业id:

3进行分配!

开始对作业id:

2进行分配!

将作业按进入时间排序表示:

******************************************

*idsizeintimeruntimestate*

******************************************

*110131*

*310211*

*220231*

******************************************

***************************************

*StartAddridsizestate*

***************************************

*11101*

*113101*

*210800*

***************************************

将作业按进入时间排序表示:

******************************************

*idsizeintimeruntimestate*

******************************************

*110131*

*310211*

*220231*

******************************************

***************************************

*StartAddridsizestate*

***************************************

*11101*

*113101*

*212201*

*410600*

***************************************

时钟:

3

作业id:

3运行结束,释放内存!

将作业按进入时间排序表示:

******************************************

*idsizeintimeruntimestate*

******************************************

*110131*

*310212*

*220231*

******************************************

***************************************

*StartAddridsizestate*

***************************************

*11101*

*113100*

*212201*

*410600*

***************************************

时钟:

4

作业id:

1运行结束,释放内存!

将作业按进入时间排序表示:

******************************************

*idsizeintimeruntimestate*

******************************************

*110132*

*310212*

*220231*

******************************************

***************************************

*StartAddridsizestate*

***************************************

*11100*

*113100*

*212201*

*410600*

***************************************

时钟:

5

作业id:

2运行结束,释放内存!

将作业按进入时间排序表示:

******************************************

*idsizeintimeruntimestate*

******************************************

*110132*

*310212*

*220232*

******************************************

***************************************

*StartAddridsizestate*

***************************************

*11100*

*113100*

*212200*

*410600*

***************************************

所有进程分配完毕!

1----->返回操作界面,3----->退出程序操作

1

1.首次适应算法

2.循环首次适应算法

3.退出

(循环首次适应算法)

请选择算法或退出:

2

请输入分区首地址:

1

时钟:

0

时钟:

1

开始对作业id:

1进行分配!

将作业按进入时间排序表示:

******************************************

*idsizeintimeruntimestate*

******************************************

*110131*

*310210*

*220230*

******************************************

***************************************

*StartAddridsizestate*

***************************************

*11101*

*110900*

***************************************

时钟:

2

开始对作业id:

3进行分配!

开始对作业id:

2进行分配!

将作业按进入时间排序表示:

******************************************

*idsizeintimeruntimestate*

******************************************

*110131*

*310211*

*220231*

******************************************

***************************************

*StartAddridsizestate*

***************************************

*11101*

*113101*

*210800*

***************************************

将作业按进入时间排序表示:

******************************************

*idsizeintimeruntimestate*

******************************************

*110131*

*310211*

*220231*

******************************************

***************************************

*StartAddridsizestate*

***************************************

*11101*

*113101*

*212201*

*410600*

***************************************

时钟:

3

作业id:

3运行结束,释放内存!

将作业按进入时间排序表示:

******************************************

*idsizeintimeruntimestate*

******************************************

*110131*

*310212*

*220231*

******************************************

***************************************

*StartAddridsizestate*

***************************************

*11101*

*113101*

*212201*

*410600*

***************************************

时钟:

4

作业id:

1运行结束,释放内存!

将作业按进入时间排序表示:

******************************************

*idsizeintimeruntimestate*

******************************************

*110132*

*310212*

*220231*

******************************************

***************************************

*StartAddridsizestate*

***************************************

*11101*

*113101*

*212201*

*410600*

***************************************

时钟:

5

作业id:

2运行结束,释放内存!

将作业按进入时间排序表示:

******************************************

*idsizeintimeruntimestate*

******************************************

*110132*

*310212*

*220232*

******************************************

***************************************

*StartAddridsizestate*

***************************************

*11101*

*113101*

*212201*

*410600*

***************************************

将作业按进入时间排序表示:

******************************************

*idsizeintimeruntimestate*

******************************************

*110132*

*310212*

*220232*

******************************************

***************************************

*StartAddridsizestate*

***************************************

*11100*

*113100*

*212200*

*410600*

***************************************

所有进程分配完毕!

 

2、文件自动生成

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

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

~~~~~~~~~~~~~~~~~~~~~首次适应算法~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~循环

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2