动态分区分配方式模拟

上传人:cn****1 文档编号:494085736 上传时间:2023-11-24 格式:DOCX 页数:4 大小:10.08KB
返回 下载 相关 举报
动态分区分配方式模拟_第1页
第1页 / 共4页
动态分区分配方式模拟_第2页
第2页 / 共4页
动态分区分配方式模拟_第3页
第3页 / 共4页
动态分区分配方式模拟_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《动态分区分配方式模拟》由会员分享,可在线阅读,更多相关《动态分区分配方式模拟(4页珍藏版)》请在金锄头文库上搜索。

1、使用动态分区分配方式的模拟1内容(1) 用C语言分别实现采用首次适应算法和最佳适应算法的动态分区分配过程 alloc()和回收过程free()。其中,空闲分区通过空闲分区链来管理:在进行内存 分配时,系统优先使用空闲区低端的空间。(2) 假设初始状态下,可用的内存空间为640KB,并有下列的请求序列:作业1申请130KB。作业2申请60KB。作业3申请100KB。作业2释放60KB。作业4申请200KB。作业3释放100KB。作业1释放130KB。作业5申请140KB。作业6申请60KB。作业7申请50KB。作业6释放60KB。请分别采用首次适应算法和最佳适应算法,对内存块进行分配和回收,要求

2、每次 分配和回收后显示出空闲分区链的情况。2、小例程序:/Tittle:使用动态分区算法的模拟/author:XuYongzhen#include #include #include #include using namespace std;typedef struct DuLNodestruct DuLNode *prior;struct DuLNode *next;int address;int jsize;intjnumber;/显示分区被那个作业占用,显示零则为空闲分区;DuLNode,*DuLinkList ;void CreatList(DuLinkList &L)DuLinkLi

3、st p=(DuLinkList)malloc(sizeof(DuLNode);L-next=p;L-jnumber=100;/为释放头结点后面的结点空间做统一化处理p-prior=L;p-next=NULL;p-jsize=600;p-address=0;p-jnumber=0;void RequestList(DuLinkList &L,int job,int size)cout作业job申请sizeKB 的空间next;while(p-jnumber0|p-jsizenext;if(p=NULL)cout没有适合的空间分配prior=p-prior;p-prior-next=s;s-ne

4、xt=p;p-prior=s;s-jnumber=job;s-jsize=size;s-address=p-address;p-address=p-address+s-jsize;p-jsize=p-jsize-s-jsize;DuLinkList t=L-next;while(t)if(t-jnumber=0)cout空闲分区: 始址=address大小 =jsizeendl;elsecout已分配的分区:作业号=jnumber”始址 =address大小=jsizenext;/whilecoutendl;/else/RequestListvoid FreeList(DuLinkList &

5、L,int job)cout作业job释放next;while(p-next&p-jnumber!=job)p=p-next;if(p-prior-jnumber=0 & p-next-jnumber=0)/p的前后都是空闲分区,则合并三者DuLinkList s=p-next;DuLinkList q=p-prior;p-prior-next=p-next;p-next-prior=p-prior;s-prior-next=s-next;s-next-prior=p-prior;q-jsize=p-jsize+s-jsize+q-jsize;if(p-prior-jnumber=0 & p-

6、next-jnumber!=0)回收区与插入点的前一个分区相临接DuLinkList q=p-prior;p-prior-next=p-next;p-next-prior=p-prior;q-jsize=p-jsize+q-jsize;if(p-prior-jnumber!=0 & p-next-jnumber=0)回收区与插入点的后一个分区相临接DuLinkList q=p-next;p-prior-next=p-next;p-next-prior=p-prior;q-address=p-address;q-jsize=p-jsize+q-jsize;if(p-prior-jnumber!=

7、0 & p-next-jnumber!=0)回收区去插入点前后的两个空闲分区都不相临接p-jnumber=0;DuLinkList t=L-next;while(t)if(t-jnumber=0)cout空闲分区:始址=address大小=jsizeendl;elsecout已分配的分区:作业号=jnumber”始址 =address大小=jsizenext;coutendl;void main()DuLinkList L=(DuLinkList)malloc(sizeof(DuLNode);CreatList(L);RequestList(L,1,130);RequestList(L,2,60);RequestList(L,3,100);FreeList(L,2);RequestList(L,4,200);FreeList(L,3);FreeList(L,1);RequestList(L,5,140);RequestList(L,6,60);RequestList(L,7,50);FreeList(L,6);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

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