c++动态分区分配算法模拟(操作系统课程设计)演示教学.doc
《c++动态分区分配算法模拟(操作系统课程设计)演示教学.doc》由会员分享,可在线阅读,更多相关《c++动态分区分配算法模拟(操作系统课程设计)演示教学.doc(35页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Good is good, but better carries it.精益求精,善益求善。c+动态分区分配算法模拟(操作系统课程设计)-课程设计课程设计名称:操作系统课程设计专业班级:学生姓名:学号:指导教师:课程设计时间:6月13日-6月17日计算机科学专业课程设计任务书学生姓名马飞扬专业班级学号题目动态分区分配方式的模拟1课题性质其它课题来源自拟课题指导教师同组姓名主要内容1)用C语言实现采用首次适应算法的动态分区分配过程alloc()和回收过程free()。其中,空闲分区通过空闲分区链表来管理,在进行内存分配时,系统优先使用空闲区低端的空间。2)假设初始状态如下,可用的内存空间为640
2、KB,并有下列的请求序列;作业1申请130KB;作业2申请60KB;作业3申请100KB;作业2释放60KB;作业4申请200KB;作业3释放100KB;作业1释放130KB;作业5申请140KB;作业6申请60KB;作业7申请50KB;作业6释放60KB请采用首次适应算法进行内存块的分配和回收,同时显示内存块分配和回收后空闲内存分区链的情况。任务要求了解动态分区分配中使用的数据结构和分配算法,并进一步加深对动态分区存储管理方式及其实现过程的理解。参考文献任满杰等操作系统原理实用教程电子工业出版社2006汤子瀛计算机操作系统(修订版)西安电子科技大学出版社2001张尧学史美林计算机操作系统教程
3、实验指导清华大学出版社2000罗宇等操作系统课程设计机械工业出版社2005审查意见指导教师签字:教研室主任签字:年月日说明:本表由指导教师填写,由教研室主任审核后下达给选题学生,装订在设计(论文)首页1:需求分析(1) 用C语言实现采用首次适应算法的动态分区分配过程alloc()和回收过程free()。其中,空闲分区通过空闲分区链表来管理,在进行内存分配时,系统优先使用空闲区低端的空间。(2) 假设初始状态下,可用的内存空间为640KB,并有下列的请求序列:作业1申请130KB;作业2申请60KB;作业3申请100KB;作业2释放60KB;作业4申请200KB;作业3释放100KB;作业1释放
4、130KB;作业5申请140KB;作业6申请60KB;作业7申请50KB;作业6释放60KB。采用首次适应算法进行内存块的分配和回收,同时显示内存块分配和回收后空闲内存分区链的情况。2:概要设计(1) 数据结构:作业队列数据结构,用于存储待处理作业;阻塞作业队列数据结构,用于存储阻塞的作业。已分配内存块的双向链表,记录当前系统已分配的各个内存块;未分配内存块的双向链表,记录系统中剩余的各个内存块;系统内存分配总情况的结点对象,记录系统中阻塞的作业总数,已分配的内存块数,剩余的内存块数。(2) 主函数:对作业队列、阻塞队列、已分配内存块链表、未分配内存块链表、系统总内存分配情况结点对象进行初始化
5、,调用分配函数或回收函数,循环处理11个作业步。(3) 分配函数alloc():首次适应算法检索未分配的内存块链表,若找到合适的内存块,则加以判断,空闲内存块大小减去作业去请求内存块大小小于系统额定的最小碎片值,把空闲块全部分配,否则进行分割分配,最后显示分配的内存信息。(4) 回收函数free():首次适应算法检索已分配的内存块链表,找到要释放的内存块后,在已分配链表中删除该结点,并把该结点挂到未分配内存块链表的结尾处,然后进行两次调整,把未分配的内存块链表调整为首地址从小到大的排列顺序,并且物理上相邻的空闲内存块要进行合并,以方便下次进行分配。调度分配函数,循环处理阻塞作业队列,最后显示回
6、收后的内存情况。调度图如下:Free()主函数Alloc()3:运行环境硬件:计算机软件:windowsXPvc+6.04:开发工具和编程语言开发工具:vc+6.0编程语言:C语言5:详细设计(1):数据结构模块structjob/作业结点intnum;/作业编号intstate;/0表示释放,1表示申请intlength;/作业要求处理大小;structyifenpei/已分配内存块结点intnum;/占有内存区域的作业编号intfirstadd;/内存区域的首地址intlength;/内存区域的大小structyifenpei*forward;structyifenpei*next;str
7、uctweifenpei/未分配内存块结点intfirstadd;/空闲区域的首地址intlength;/空闲区域的大小structweifenpei*forward;structweifenpei*next;structtotal/内存分配状况记录结点inttotalyifen;/已分配的总内存块数inttotalweifen;/未分配的总内存块数inttotalzuse;/阻塞的作业个数;structjobjobarray11;/作业处理队列structyifenpei*headyifen=(structyifenpei*)malloc(len2);/已分配的内存块所构成的双向链表的头指针
8、structweifenpei*headweifen=(structweifenpei*)malloc(len3);/未分配的内存块所构成的双向链表的头指针structjobzuse11;/阻塞作业队列structtotaltotalnow;2:主函数模块voidmain()jobarray0.num=1;jobarray0.state=1;jobarray0.length=130;/*初始化请求序列,共11个作业步*/jobarray1.num=2;jobarray1.state=1;jobarray1.length=60;jobarray2.num=3;jobarray2.state=1;
9、jobarray2.length=100;jobarray3.num=2;jobarray3.state=0;jobarray3.length=60;jobarray4.num=4;jobarray4.state=1;jobarray4.length=200;jobarray5.num=3;jobarray5.state=0;jobarray5.length=100;jobarray6.num=1;jobarray6.state=0;jobarray6.length=130;jobarray7.num=5;jobarray7.state=1;jobarray7.length=140;jobar
10、ray8.num=6;jobarray8.state=1;jobarray8.length=60;jobarray9.num=7;jobarray9.state=1;jobarray9.length=50;jobarray10.num=6;jobarray10.state=0;jobarray10.length=60;totalnow.totalyifen=0;totalnow.totalweifen=1;totalnow.totalzuse=0;/初始化系统内存分配状况structweifenpei*weifen=(structweifenpei*)malloc(len3);weifen-f
11、irstadd=1;weifen-forward=headweifen;weifen-length=640;weifen-next=NULL;headweifen-forward=NULL;headweifen-next=weifen;/初始化未分配的内存块双向链表headyifen-next=NULL;headyifen-forward=NULL;/初始化已分配的内存块双向链表for(intm=0;m11;m+)/初始化阻塞作业队列zusem.num=0;zusem.state=0;zusem.length=0;for(inti=0;inext;yifennow1=headyifen;yif
12、ennow2=headyifen-next;while(yifennow2!=NULL)yifennow1=yifennow2;yifennow2=yifennow2-next;yifennow2=(structyifenpei*)malloc(len2);while(weifennow2!=NULL)/首次适应算法检索合适的内存块if(weifennow2-length=jobnow.length)if(weifennow2-length-jobnow.length)next=weifennow2-next;yifennow2-num=i;yifennow2-firstadd=weifenn
13、ow2-firstadd;yifennow2-length=weifennow2-length;yifennow2-forward=yifennow1;yifennow1-next=yifennow2;yifennow2-next=NULL;totalnow.totalyifen+;totalnow.totalweifen-;else/否则进行分割分配诶yifennow2-num=i;yifennow2-firstadd=weifennow2-firstadd;yifennow2-length=jobnow.length;yifennow2-next=NULL;yifennow2-forwar
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 动态 分区 分配 算法 模拟 操作系统 课程设计 演示 教学
限制150内