蚂蚁文库
换一换
首页 蚂蚁文库 > 资源分类 > DOC文档下载
 

动态分区存储管理

  • 资源ID:51171144       资源大小:113.00KB        全文页数:12页
  • 资源格式: DOC        下载权限:游客/注册会员    下载费用:10积分 【人民币10元】
快捷注册下载 游客一键下载
会员登录下载
三方登录下载: 微信快捷登录 QQ登录  
下载资源需要10积分 【人民币10元】
邮箱/手机:
温馨提示:
支付成功后,系统会自动生成账号(用户名和密码都是您填写的邮箱或者手机号),方便下次登录下载和查询订单;
支付方式: 微信支付    支付宝   
验证码:   换一换

 
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,既可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰   

动态分区存储管理

操作系统课程实验报告 实验名称动态分区存储管理 姓 名 学 号 地 点 指导老师 专业班级 、实验目的 1、熟悉并掌握动态分区分配的算法。 2、熟悉并掌握动态分区中分区回收的各种情况,并能够实现分区合并。 二、实验内容用高级语言模拟实现动态分区存储管理,要求 1、分区分配算法至少实现首次适应算法、最佳适应算法和最坏适 应算法中的至少一种。熟悉并掌握各种算法的空闲区组织方式。 2、分区的初始化可以由用户输入初始分区的大小。(初始化后 只有一个空闲分区,起始地址为0,大小是用户输入的大小) 3、分区的动态分配过程由用户输入作业号和作业的大小,实现 分区过程。 4、分区的回收用户输入作业号,实现分区回收,同时,分区的 合并要体现出来。(注意不存在的作业号要给出错误提示) 5、分区的显示任何时刻,可以查看当前内存的情况(起始地址 是什么,大小多大的分区时空闲的,或者占用的,能够显示出 来) 6、要求考虑(1)内存空间不足的情况,要有相应的显示; (2)作业不能同名,但是删除后可以再用这个名字; (3)作业空间回收是输入作业名,回收相应的空间,如 果这个作业名不存在,也要有相应的提示。 三、实验代码 includestdio h //// 内存初始大小 碎片最小值 includestdlib. h define SIZE 800 define MINSIZE 5 enum STATE { Free, Busy }; struct subAreaNode { int addr; int size; int taskTd; STATE state; subAreaNode *pre;subAreaXode *nxt; //起始地址 //分区大小 //作业号 //分区状态 //分区前向指针//分区后向指针 }subHead; //初始化空闲分区链 void intSubAreaO //分配初始分区内存 subAreaNode *fir subAreaNode *mallocsizeofsubAreaNode; //给首个分区赋值 firaddr 二 0; fir-size 二 SIZE; fir-state Free; fir-taskld -1; fir-pre fesubHead; fir-nxt 二 NULL; //初始化分区头部信息 subHead, pre NULL; subHead, nxt fir; } //首次适应算法 int f irstFit int taskld, int size subAreaNode *p subHead, nxt; whilep 二 NULL { if p-state Free p-size size { //找到要分配的空闲分区 ifp-size - size MINSIZE { //整块分配 p-state 二 Busy; p-taskld taskld; } else { //分配大小为size的区间 subAreaNode *node subAreaNode *mallocsizeofsubAreaNode; node-〉addr p-addr size; node-size p-size - size; node-state Free; node-〉taskld 1; //修改分区链节点指针 nodepre p; node-nxt p-nxt; ifp-nxt NULL { p-nxtpre node; } p-nxt node; //分配空闲区间 p-size size; pstate 二 Busy; p-taskld 二 taskld; printf C内存分配成功 \n〃; return 1; p p-nxt; } printf C找不到合适的内存分区,分配失败..・\n〃; return 0; //最佳适应算法 int bestFitint taskld, int size subAreaNode *tar NULL; int tarSize SIZE 1; subAreaNode *p subHead, nxt; whilep NULL { //寻找最佳空闲区间 ifp-state Free p-size size p-size tarSize { tar p; tarSize p-size; } p p-nxt; } if tar NULL { //找到要分配的空闲分区 iftar-size - size MINSIZE //整块分配 tar-state 二 Busy; tar-taskld taskld; } else { //分配大小为size的区间 subAreaNode *node 二subAreaNode *mallocsizeofsubAreaNode; node-addr tar-addr size; node-size tar-size - size; nodestate Free; nodetaskld -1; //修改分区链节点指针 node-pre tar; node-nxt tar-nxt; if tar-nxt 二 NULL tar-nxtpre node; tar-nxt node; //分配空闲区间 tar-size 二 size; tar-state Busy; tar-taskld taskld; } printf /z内存分配成功 \n〃; return 1; } else { //找不到合适的空闲分区 printf C找不到合适的内存分区,分配失败..・\n〃; return 0; } } //回收内存 int freeSubAreaint taskld { int flag 0; subAreaNode *p subHead, nxt, *pp; whilep NULL { ifp-state 二二 Busy p-taskTd 二二 taskld { flag 1; ifp-pre subHead p-pre-state Free p-nxt NULL p-nxt-state Fr

注意事项

本文(动态分区存储管理)为本站会员(aaakkpc)主动上传,蚂蚁文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知蚂蚁文库(发送邮件至2303240369@qq.com或直接QQ联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们


网站客服QQ:2303240369

copyright@ 2017-2027 mayiwenku.com 

网站版权所有  智慧蚂蚁网络

经营许可证号:ICP备2024020385号



收起
展开