资源简介
操作系统课程设计 模拟设计动态分区存储管理的分配与回收

代码片段和文件信息
#include
using namespace std;
enum Status{FREEBUSYOKERROR};
struct PST
{//partition specification table
int ID;//分区号
int addr;//起始地址
int size;//分区长度
Status state;//状态
};
struct Node
{//双向链表结点
PST data;
Node *back;//前驱
Node *next;//后继
Node()
{
back=NULL;
next=NULL;
}
Node(int idint size)
{
data.ID=id;
data.size=size;
back=NULL;
next=NULL;
}
};
int area;//输入内存空间
Node *head*last;//表头指针和表尾指针
void Init(int area)
{
head=new Node();
last=new Node();
head->next=last;
head->data.ID=-1;
head->data.addr=-1;
head->data.size=0;
last->back=head;
last->data.addr=0;
last->data.ID=0;
last->data.size=area;
last->data.state=FREE;
}
Status FFA(int idint size)
{//First fit algorithm
Node *temp=new Node(idsize);
temp->data.state=BUSY;
Node *cur=head->next;
while(cur)
{
if(cur->data.state==FREE&&cur->data.size==size)
{//如果空闲块大小刚好与请求大小相等直接分配
cur->data.ID=id;
cur->data.state=BUSY;
return OK;
break;
}
if(cur->data.state==FREE&&cur->data.size>size)
{//如果大于
temp->back=cur->back;
temp->next=cur;
cur->back->next=temp;
temp->data.addr=cur->data.addr;
cur->back=temp;
cur->data.addr=cur->data.addr+size;
cur->data.size=cur->data.size-size;
return OK;
break;
}
cur=cur->next;
}
return ERROR;
}
Status BFA(int idint size)
{//Best fit algorithm
Node *temp=new Node(idsize);
temp->data.state=BUSY;
int min;//记录符合满足请求的最小空闲块大小
Node *fit;//指向采用最佳适应算法的插入位置
Node *cur=head->next;
while(cur)
{//取得第一个可以分配的位置(不一定是最佳位置)
if(cur->data.state==FREE&&cur->data.size>=size)
{
fit=cur;
min=cur->data.size;
break;
}
cur=cur->next;
}
while(cur)
{
if(cur->data.state==FREE&&cur->data.size==size)
{//如果相等直接分配
cur->data.state=BUSY;
cur->data.ID=id;
return OK;
break;
}
if(cur->data.state==FREE&&cur->data.size>size)
{//获取最佳位置
if(cur->data.size {
min=cur->data.size;
fit=cur;
}
}
cur=cur->next;
}
if(fit)
{//若最佳,插入
temp->back=fit->back;
temp->next=fit;
fit->back->next=temp;
temp->data.addr=fit->data.addr;
fit->back=temp;
fit->data.addr=fit->data.addr+size;
fit->data.size=fit->data.size-size;
return OK;
}
else
return ERROR;
}
Status WFA(int idint size)
{//worst fit algorithm
Node *temp=new Node(idsize);
temp->data.state=BUSY;
int max;//记录符合满足请求的最大空闲块大小
Node *fit;//指向采用最坏适应算法的插入位置
Node *cur=head->next;
while(cur)
{//取得第一个可以分配的位置(不一定是最佳位置)
if(cur->data.state==FREE&&cur->data.size>=size)
{
fit=cur;
max=cur->data.size;
break;
}
cur=cur->next;
}
while(cur)
{
if(cur->data.state==FREE&&cur->data.size>size)
{//获取最佳位置
if(cur->data.size>max)
{
max=cur->data.size;
fit=cur;
}
}
cur=cur->next;
}
if(fit)
{//若最佳,插入
temp->back=fit->back;
temp->next=fit;
fit->back->next=temp;
fit->back=temp;
temp->d
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 430080 2012-01-11 15:10 模拟设计动态分区存储管理的分配与回收11.doc
文件 6797 2012-01-10 22:48 模拟设计动态分区存储管理的分配与回收.cpp
----------- --------- ---------- ----- ----
436877 2
- 上一篇:赋值语句的翻译程序
- 下一篇:xm
l文件加密和解密
相关资源
- 模拟段页式虚拟存储管理中地址转换
- 操作系统课程设计完整版
- 磁盘调度算法的模拟实现及对比
- 操作系统课程设计实现可变分区存储
- 操作系统课程设计 二级文件管理系统
- 操作系统课程设计代码
- 操作系统课程设计 银行家算法论文
- 操作系统课程设计 内存管理
- 广州大学操作系统课程设计实验报告
- 基于linux的操作系统课程设计 中北大
- 操作系统课程设计 绘制资源分配图
- 操作系统课程设计完整版报告+源程序
- 模拟Unix文件系统,操作系统课程设计
- 操作系统课程设计报告 分页存储管理
- 山东大学操作系统课程设计实验报告
- GeekOS操作系统课程设计project0-4讲解
- DOS画画_操作系统课程设计_操作系统图
- 操作系统课程设计报告-单用户多级文
- QBlade 0.6 多语中文版(桨叶模拟设计工
- Pintos 西电操作系统课程设计3 报告+代
- 通过网页服务器监控设备状态
- 中北大学软件学院操作系统课程设计
- 操作系统课程设计报告(进程控制与
- 模拟设计页式存储管理的分配与回收
- 模拟设计Cadence教程
- 操作系统课程设计资源分配图
- 操作系统课程设计生产者和消费者问
- linux文件系统操作系统课程设计
- 操作系统课程设计实验报告
- 操作系统课程设计.zip
评论
共有 条评论