1 / 15
文档名称:

最坏适应算法-动态分区法存储.docx

格式:docx   大小:13KB   页数:15页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

最坏适应算法-动态分区法存储.docx

上传人:薇薇安 2021/8/26 文件大小:13 KB

下载得到文件列表

最坏适应算法-动态分区法存储.docx

相关文档

文档介绍

文档介绍:阅读教材《计算机操作系统》第四章,掌握存储器管理相关概念和原理。
编写程序模拟实现内存的动态分区法存储管理。内存空闲区使用自由链管理,采用最坏适应算法从自由链中寻找空闲区进行分配,内存回收时假定不做与相邻空闲区的合并。
假定系统的内存共640K,初始状态为操作系统本身占用64K。在t1时间之后,有作业A、B、C、D分别请求8K、16K、64K、124K的内存空间;在t2时间之后,作业C完成;在t3时间之后,作业E请求50K的内存空间;在t4时间之后,作业D完成。要求编程序分别输出t1、t2、t3、t4时刻内存的空闲区的状态。
      实验代码带界面系统
#include<>
#include<>
typedef struct list{
ﻩint len;
ﻩchar name;
int address;
ﻩstruct list *next;
}listNode,*listlink;
char id='1';
void init(listlink &q){
ﻩq=(listlink)malloc(sizeof(listNode));
if(!q) exit(-1);
ﻩq->next=NULL;
}//初始化
int length(listlink free){
ﻩlistlink q;
ﻩq=free->next;
ﻩint len=0;
while(q!=NULL){
ﻩﻩlen=len+q->len;
ﻩﻩq=q->next;
ﻩ}
ﻩreturn len;
}//空闲区总长度
ﻩﻩ ﻩ
listlink Delist(char name,listlink &q){
listlink a,b,c;
  a=q->next;
ﻩb=q;
while(a!=NULL){
ﻩﻩif(a->name==name){
ﻩﻩﻩc=a->next;
ﻩﻩﻩb->next=c;
ﻩﻩﻩreturn a;
ﻩﻩ}
ﻩb=b->next;
ﻩa=a->next;
ﻩ}
return NULL; 
}//按作业或进程名删除该结点
void insert(listlink &q,int address,int len,char name='F'){
ﻩlistlink a=(listlink)malloc(sizeof(listNode));
ﻩa->address=address;
a->len=len;
ﻩa->name=name;
ﻩlistlink b=q;
ﻩwhile(b->next!=NULL){
ﻩ b=b->next;
ﻩ}
ﻩa->next=NULL;
ﻩb->next=a;
}//插入结点
void sort(listlink &q){
ﻩlistlink a,b;
ﻩint temp1,temp2;
a=q->next;
if(a==NULL)
ﻩﻩreturn;
ﻩb=a->next;
while(a->next!=NULL){
ﻩﻩwhile(b!=NULL){
ﻩﻩif(a->len<=b->len){
ﻩﻩtemp1=a->address;
ﻩﻩ temp2=a->len;
ﻩﻩﻩ a->len=b->len;
ﻩﻩ ﻩa->address=b->address;
ﻩ ﻩﻩb->address=temp1;
ﻩﻩ ﻩb->len=temp2;
ﻩ ﻩ}
ﻩ ﻩb=b->next;
ﻩﻩ}
ﻩa=a->next;
ﻩﻩb=a->next;

}//按长度从大到小排序
listlink findpre(listlink free,int address){
listlink a;
a=free->next;
ﻩwhile(a!=NULL){
ﻩﻩif(a->address+a->len==address){
ﻩﻩDelist(a->name,free);
ﻩﻩﻩreturn a;
ﻩﻩ}
ﻩ a=a->next;
ﻩ}
ﻩreturn NULL;
}//查找前连接区
listlink findnext(listlink free,int address,int len){
ﻩlistlink a;
ﻩa=free->next;
ﻩwhile(a!=NULL){
ﻩﻩif(a->address==address+len){
ﻩ ﻩDelist(a->name,free