动态分区分配存储管理报告.docVIP

  • 84
  • 0
  • 约1.14万字
  • 约 19页
  • 2017-12-21 发布于江西
  • 举报
动态分区分配存储管理报告

淮北师范大学 程序设计课程设计 动态分区分配存储管理系统 学 院 计算机科学与技术 专 业 计算机科学与技术 学 号 学 生 姓 名 指导教师姓名 2012年月 日 操作系统课程设计是计算机专业重要的教学环节,它为学生提供了一个既动手又动脑, 将课本上的理论知识和实际有机的结合起来,独立分析和解决实际问题的机会。 ??进一步巩固和复习操作系统的基础知识。 ??培养学生结构化程序、模块化程序设计的方法和能力。 ??提高学生调试程序的技巧和软件设计的能力。 ??提高学生分析问题、解决问题以及综合利用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 stdi

文档评论(0)

1亿VIP精品文档

相关文档