操作系统课程设计实验报告--内存的连续分配算法

操作系统课程设计实验报告--内存的连续分配算法

ID:9649446

大小:156.89 KB

页数:16页

时间:2018-05-04

操作系统课程设计实验报告--内存的连续分配算法_第1页
操作系统课程设计实验报告--内存的连续分配算法_第2页
操作系统课程设计实验报告--内存的连续分配算法_第3页
操作系统课程设计实验报告--内存的连续分配算法_第4页
操作系统课程设计实验报告--内存的连续分配算法_第5页
资源描述:

《操作系统课程设计实验报告--内存的连续分配算法》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、组号成绩计算机操作系统课程设计报告题目内存的连续分配算法专业:计算机科学与技术班级:学号姓名:指导教师:2016年12月26日一、设计目的掌握内存的里联系分配方式的各种算法。二、设计内容本系统模拟操作系统内存分配算法的实现,实现可重定位分区分配算法,采用PCB定义结构体来表示一个进程,定义了进程的名称和大小,进程内存起始地址和进程状态。内存分区表用空闲分区表的形式来模拟实现。三、设计原理动态分区的实现是根据进程所申请的内存大小来决定动态的由系统进行分配内存空间大小,因此分区表里的空闲分区个数是不定的,根据进程数和进程大

2、小决定的。可重定位分区算法比动态分区算法增加了紧凑的功能。四、详细设计及编码1、模块分析该实验可分为三大部分,每一部分又由个数不同的几个函数实现。第一部分是装入作业,第二部分是内存回收,第三部分是进行紧凑。装入作业的时候首先初始化一个链表,根据用户输入的操作代号进行相应的操作。若用户选择装入作业首先判断空闲分区表里有没有比作业需要的内存大的分区,若有直接分配,若没有进行紧凑操作,再将紧凑后的空闲分区与作业大小比较,若能装的下则分配给作业,若是进行紧凑后的空闲分区仍不能装入整个作业则通知用户内存不够。2、流程图2、代码实

3、现#include#include#include#include#defineTURE1#defineFALSE0#defineOK1#defineERROR0#defineINFEASIBLE-1#defineOVERFLOW-2#defineSIZE3//进程表intppNo=1;//用于递增生成进程号intpLength=0;structPCB{intpNo;//进程号(名)intpSize;//进程大小intpOccupy;//实际占

4、用的内存intpStartAddr;//进程起始地址intpState;//进程状态};structPCBpList[200];//////////////////空闲分区表部分/////////////////////////////////////////////////////typedefintStatus;typedefstructemptyNode{//空闲分区结构体intareaSize;//空闲分区大小intaStartAddr;//空闲分区始址structemptyNode*next;}emptyNo

5、de,*LinkList;intListDelete(structPCB*pList,inti);//删除下标为i的进程voidpSort(structPCB*pList);//内存中的进程按始址递增排序voidcompact(LinkList&L,structPCB*pList);//紧凑,内存中进程移动,修改进程数据结构;空闲分区合并,修改空闲分区表数据结构voidamalgamate(LinkList&L);//回收后进行合并空闲分区voidrecycle(LinkList&L,structPCB*pList);

6、//回收,从进程表中删除进程,把释放出的空间插入到空闲分区链表中StatusInitList(LinkList&L);///构造一个新的有头节点的空链表LStatusClearList(LinkList&L);///将链表L重置为空表StatusListInsert(LinkList&L,LinkLists1);//根据始址进行插入voidDeleteElem(LinkList&L,intaStartAddr);//删除线性表中始址值为aStartAddr的结点voidPrintList(LinkListL);//输出

7、各结点的值voidcreatP(structPCB*p);///初始化进程intsearch(LinkList&L,intpSize);//检索分区表,返回合适分区的首址intadd(LinkList&L);//返回空闲分区总和voidpListPrint(structPCB*pList);//AAA/输出内存中空间占用情况voiddistribute(LinkList&L,structPCB*process);intListDelete(structPCB*pList,inti)//AAA/删除下标为i的进程{for

8、(;i

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

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

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