操作系统动动态分配管理系统

上传人:ji****72 文档编号:37727846 上传时间:2018-04-21 格式:DOC 页数:25 大小:383KB
返回 下载 相关 举报
操作系统动动态分配管理系统_第1页
第1页 / 共25页
操作系统动动态分配管理系统_第2页
第2页 / 共25页
操作系统动动态分配管理系统_第3页
第3页 / 共25页
操作系统动动态分配管理系统_第4页
第4页 / 共25页
操作系统动动态分配管理系统_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《操作系统动动态分配管理系统》由会员分享,可在线阅读,更多相关《操作系统动动态分配管理系统(25页珍藏版)》请在金锄头文库上搜索。

1、淮北淮北师师范大学范大学操作系统设计实验报告题目动态分区分配管理系统班级:09 非师 设计者:曹严严 指导老师:周影 时间: 2012/03/14-2012/03/15 目录1 程序设计的内容和相关的要求-2 程序总的功能说明-3 程序的模块的说明-4 程序设计的流程图-5 程序的操作说明及运行结果-6 源程序的清单-7 心得体会-1程序设计的内容和相关的要求 课程设计的目的课程设计的目的:操作系统课程设计是计算机学院重要的教学环节,它 为 学生提供了一个既动手又动脑,将课本上的理论知识和实际有机的结合起来,独 立分析和解决实际问题 的机会。 进一步巩固和复习操作系统的基础知识。 培养学生结构

2、化程序、模块化程序设计的方法和能力。 提高学生调试程序的技巧和软件设计的能力。 提高学生分析问题、解决问题以及综合利用 C语言进行程序设计的能 力。实实现现的的任任务务:编编写写一个动态分区分配程序。设设计计内内容容:用高级语言编写和调试一个动态分区内存分配程序,演示实现下列两种动态分区分配算法1.首首次次适适应应算算法法 2.循循环环首首次次适适应应算算法法 设设计计要要求求: 1.内存中有0-100M的空间为用户程序空间,最开始用户空间是空闲的; 2.作业数量、作业大小、进入内存空间、运行时间需要通过界面进行输入; 3.可读取样例数据(要求存放在外部文件夹中)进行作业数量、作业大小、进图

3、内存时间、运行时间的初始化; 4.根据作业进图内存的时间,采用简单的先进先出原则进行从外村到内存的调度, 作业具有等待(从外存进入内存执行) 、装入(在内存可执行) 、结束(运行结束,退出内存)三种状态。 (为了简化,不考虑cpu的调度与切换,运行时间为作业在 内存中驻留的时间) ; 5.能够自动进行内存分配与回收,可根据需要自动进行紧凑与拼接操作,所有过 程均有动态图形变化的显示; 6.采用可视化界面,可随时暂停显示当前内存分配和使用情况图。2程序总的功能说明: 本程序可以从界面直接输入作业并进行动态的内存分配,也可以自动地生成作业文件并自行 调度进行内存分配,每次分配可以选择两种算法(首次

4、适应算法和循环首次算法)中的一种, 每次作业结束后可以进入操作主界面进行再次作业的操作。3 程序各模块的功能说明:(1) 界面显示函数: showInterface(PL p,Job job);显示操作界面 showJob(Job job);显示作业链表;showPartitiion(PL pl)显示分区链表 (2) 执行练习的功能函数: copyJob(Job p);作业链表复制函数函数 InitpartitionList(PL /输入作业的数量; typedef struct jobList int id;/ 作业的 name int size;/ 作业大小(需要的存储空间大小) int

5、intime; /进入时间 int runtime; /运行时间 int state; /作业的状态(0 表示等待,1 表示执行,2 表 示结束并释放) struct jobList *next;/ 作业链表指针 *Job; typedef struct partitionList int id; int startAddress;/分区起始地址 int size;/分区大小 int state; /分区的状态 struct partitionList *prior; struct partitionList *next;/ 分区链表指针 *PL;FILE *fp; /*打开文件*/ void

6、 openFile() if(fp=(fopen(“D:作业文件.txt“,“w“)=NULL) printf(“无法打开文件!n“); exit(0); /*读取文件*/void ReadFile() if(fp=(fopen(“D:作业文件.txt“,“r“)=NULL) printf(“无法打开文件!n“); exit(0); /*将随机产生进程的参数写入文件*/ void RandomParameter() openFile();for(int i=0;istartAddress,pl-id,pl-size,pl-state); printf(“n“); pl=pl-next; pri

7、ntf(“t*n“); Sleep(1000); if(kbhit()=1)system(“pause”); /*按进入时间顺序创建一个作业链表*/void InsertNode(Job p,Job q1=job; q2=job-next; int i=0; if(!q2) p-next=q2; q1-next=p; while(q2!=NULL q2=q2-next; i=1; if(!q2 q1-next=p; if(q2!=NULL q1-next=p; Job CreateJoblist(Job if(!job) exit(0); job-next=NULL; Job p; print

8、f(“idtsizetintimetruntimen“); for(int i=0;iid, p-state=0; if(p-size100)printf(“作业过大不能为之分配内存,请重新输入的作业:n“);scanf(“%dt%dt%dt%d“,p-state=0;InsertNode(p,job); elseInsertNode(p,job); return job; /*从外部文件读入数据并进行作业初始化*/ Job ReadInitJob(Job job=(Job)malloc(sizeof(jobList); if(!job) exit(0); job-next=NULL; Job

9、 p;for(int i=0;iid,InsertNode(p,job); return job; /*初始化分区链表*/PL InitpartitionList(PL if(!p) exit(0);p-size=MemorySize; printf(“输入分区首地址:“); scanf(“%d“, p-state=0; p-id=0; p-next=NULL;p-prior=NULL; return p;/*将一个作业链表复制到另一个链表*/Job copyJob(Job p) Job q,L,s=p,r; L=(Job)malloc(sizeof(jobList); L-next=NULL

10、; r=L; s=s-next; while(s) q=(Job)malloc(sizeof(jobList); q-id=s-id; q-state=0; q-intime=s-intime; q-runtime=s-runtime; q-size=s-size; r-next=q; q-next=NULL; r=q; s=s-next; return L; /*将一个分区链表复制到另一个链表*/PL copypartition(PL p) PL q,L,s=p,r; L=(PL)malloc(sizeof(partitionList); L-next=NULL; r=L; s=s-next

11、; while(s) q=(PL)malloc(sizeof(partitionList); q-size=s-size; q-startAddress=s-startAddress; q-state=s-state; r-next=q; q-next=NULL; r=q; s=s-next; return L; /*作业链表*/ void showJob(Job job) job=job-next; printf(“n 将作业按进入时间排序表示:n“); printf(“t*n“); printf(“t* idtsizetintimetruntimetstate *n“); printf(“

12、t*n“); while(job) printf(“t* %dt%dt%dt%dt%d *“,job-id,job-size,job-intime,job- runtime,job-state); printf(“n“); job=job-next; printf(“t*n“); printf(“n“); /*回收内存*/void Recover(PL pl3,PL pl3-startAddress=pl3-prior-startAddress; pl3-state=0; pl3-id=0;if(pl3-prior-prior) pl3-prior-prior-next=pl3;pl3-prior=pl3-prior-prior; else pl3-prior=pl3-prior-prior; pl=pl3; pl3=pl; else if(pl3-prior pl3-state=0; pl3-id=0; if(pl3-next-next) pl3-next-next-prior=pl3; pl3-next=pl3-next-next;

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

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