资源简介
(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。
请分别采用首次适应算法和最佳适应算法,对内存块进行分配和回收,要求每次分配和回收后显示出空闲分区链的情况。
代码片段和文件信息
//新建名为zcfp 的win32 console application工程
//选择菜单项Project->Add to Project->File,在其中编辑好源文件并保存
//通过调用菜单项Build->Rebuild all进行编辑连接,可以在指定的工程目录
//下得到debug->zcfp.exe程序,然后把测试文件input.txt文件保存到debug目录下,
//就可以在控制台进入该debug目录运行程序
#include “stdio.h“
#include “iostream.h“
#include “string.h“
#include “iomanip.h“
const int MAXJOB=100;// 定义表的最大记录数
typedef struct node {
int start;
int size;
char tag[20];
}job;
job frees[MAXJOB];//定义空闲区表
int free_quantity;
job occupys[MAXJOB];//定义已分配区表
int occupy_quantity;
//初始化函数
void initial()
{
int i;
for(i=0;i {
frees[i].start=-1;
frees[i].size=0;
strcpy(frees[i].tag“free“);
occupys[i].start=-1;
occupys[i].size=0;
strcpy(occupys[i].tag“ “);
}
free_quantity=0;
occupy_quantity=0;
}
//读数据函数
int readData()
{
FILE *fp;
char fname[20];
cout<<“请输入初始空闲表文件名:“;
cin>>fname;
if((fp=fopen(fname“r“))==NULL)
{
cout<<“错误,文件打不开,请检查文件名“< }
else
{
while(!feof(fp))
{
fscanf(fp“%d%d“&frees[free_quantity].start&frees[free_quantity].size);
free_quantity++;
}
return 1;
}
return 0;
}
//sort
void sort()
{
int ijp;
for(i=0;i {
p=i;
for(j=i+1;j {
if(frees[j].start {
p=j;
}
}
if(p!=i)
{
frees[free_quantity]=frees[i];
frees[i]=frees[p];
frees[i]=frees[free_quantity];
}
}
}
// 显示函数
void view()
{
int i;
cout< cout<<“当前空闲表:“< cout<<“起始地址 大小 状态“< for(i=0;i {
cout.setf(2);
cout.width(12);
cout< cout.width(10);
cout< cout.width(8);
cout< }
cout< cout<<“当前已分配表:“< cout<<“起始地址 大小 占用作业名“< for(i=0;i {
cout.setf(2);
cout.width(12);
cout< cout.width(10);
cout< cout.width(8);
cout< }
}
//最先适应算法
void earliest()
{
char job_name[20];
int job_size;
int ijflagt;
cout<<“请输入新申请内存空间的作业名和空间大小:“;
cin>>job_name;
cin>>job_size;
flag=0;
for(i=0;i<=free_quantity;i++)
{
if(frees[i].size>=job_size)
{
flag=1;
}
}
if(flag==0
相关资源
- nachos操作系统实验三
- NUR算法和OPT算法实现-----操作系统实验
- 进程同步操作系统实验三,带实验报
- 操作系统实验-计算机进程管理和进程
- 操作系统 动态分区存储管理方式的
- 操作系统实习:动态分区分配C++实现
- 动态分区分配四种算法
- 操作系统实验-----MFC线程--购票系统演
- 分区式存储管理
- 请求调页存储管理方式的模拟
- 实现动态分区分配模拟程序
- 进程的同步-吃水果问题
- 东北大学操作系统实验1进程的同步与
- 动态分区分配方式模拟c语言
- 操作系统 请求分页式存储管理的地址
- 可重定向动态分区分配算法
- c++ 实验:可变分区管理
- 操作系统课程设计——一动态分区分
- 东华大学 操作系统实验 进程调度 含
- 武汉大学操作系统实验
- 操作系统实验 页式存储管理方案模拟
- 安徽大学操作系统实验七磁盘调度算
- 操作系统实验进程调度MFC源码+实验报
- 计算机操作系统实验一 进程创建模拟
- 操作系统 银行家算法
评论
共有 条评论