操作系统课程设计报告-主存空间的分配与回收

操作系统课程设计报告-主存空间的分配与回收

ID:38628831

大小:101.50 KB

页数:15页

时间:2019-06-16

操作系统课程设计报告-主存空间的分配与回收_第1页
操作系统课程设计报告-主存空间的分配与回收_第2页
操作系统课程设计报告-主存空间的分配与回收_第3页
操作系统课程设计报告-主存空间的分配与回收_第4页
操作系统课程设计报告-主存空间的分配与回收_第5页
资源描述:

《操作系统课程设计报告-主存空间的分配与回收》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、操作系统课程设计报告学院:计算机科学与技术学院专业:软件工程班级:软件***班姓名****学号********实验组***实验时间指导教师*****成绩实验项目名称主存空间的分配与回收实验目的通过该课程设计使我们理解在不同的存储管理方式下,如何实现主存空间的分配与回收。使学生初步具有研究、设计、编制和调试操作系统模块的能力实验内容及要求设计要求:1.设计基于空闲区说明表的可变分区分配与回收算法;2.或设计基于空闲区链表的可变分区分配与回收算法;3.画出以上算法流程图;4.编程实现算法功能;5.编写课程设计说明书。工作量要求:完成以上设计要求中的所有算法功能。实验环境硬件环境:Win

2、dows7系统软件环境:VC++6.0开发工具总体设计本次课程设计中主要是模拟主存分配与回收,考虑到一个进程的五个状态,初始,就绪,等待,执行,终止五个状态,所以决定从一个进程的运行过程进行模拟,总体流程大致是首先创建一个进程即填写PCB信息,然后将进程送到后备集合,然后从后备集合从取出一个进程进行是分配。如果能分配,就将其送入就绪集合,然后从就绪集合中取出一个进程运行一个时间片(即一秒钟),接着将该进程送入就绪集合,如果运行时间减为零,就不送入就绪集合中。考虑到实际的需要,我添加了一个挂起状态,还添加了一个撤销进程函数,一个强制回收函数。在本次设计中用多线程模拟多进程,所以各个共

3、享表都应该设置为线程安全的。程序框图及流程图程序框图:程序流程图:主要源代码及注释#include#include#include#defineOK1#defineERROR0typedefintStatus;typedefstructnode//定义一个空闲区说明表结构{intnum;//分区序号longstart;//起始地址longlength;//分区大小intstate;//分区状态chartag[20];//作业名称}job;typedefstructNode//线性表的双向链表存储结构{jobdata;stru

4、ctNode*prior;//前趋指针structNode*next;//后继指针}Node,*LinkList;LinkListfirst;//头结点LinkListend;//尾结点intflag;//记录要删除的分区序号StatusInitblock()//开创带头结点的内存空间链表{first=(LinkList)malloc(sizeof(Node));end=(LinkList)malloc(sizeof(Node));first->prior=NULL;first->next=end;end->prior=first;end->next=NULL;end->data.

5、num=1;end->data.start=0;end->data.length=600;end->data.state=0;strcpy(end->data.tag,"无作业");returnOK;}voidsort()//分区序号重新排序{Node*p=first->next,*q;q=p->next;for(;p!=NULL;p=p->next){for(q=p->next;q;q=q->next){if(p->data.num>=q->data.num){q->data.num+=1;}}}}//显示主存分配情况voidshow(){intflag=0;//用来记录分区序号

6、Node*p=first;p->data.num=0;p->data.start=0;p->data.length=0;p->data.state=1;strcpy(p->data.tag,"");sort();printf("tt》主存空间分配情况《");printf("**********************************************************");printf("分区序号t作业名tt起始地址t分区大小t分区状态");p=p->next;while(p){printf("%dtt%stt%d

7、tt%d",p->data.num,p->data.tag,p->data.start,p->data.length);if(p->data.state==0)printf("tt空闲");elseprintf("tt已分配");p=p->next;}printf("**********************************************************");}//首次适应算法StatusFirst_fit

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。