资源简介
(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
相关资源
- 动态分区存储管理的mfc可视化实现
- C语言实现最低松弛度优先算法源代码
- 操作系统实验 进程调度 高响应比优先
- 安徽大学操作系统实验八基于扫描的
- 安徽大学操作系统实验四主存空间的
- 操作系统实验 请求分页存储管理(包
- 操作系统实验可视化界面
- 操作系统实验多线程同步含C++源代码
- 华中科技大学操作系统实验报告.doc
- 操作系统实验二存储管理动态分区分
- 北京林业大学操作系统B实验
- 操作系统实验 生产者消费者 PV操作
- 操作系统实验 循环首次适应算法C
- 文件系统 操作系统实验 C++
- 用C#和C++实现的进程调度算法程序操作
- 操作系统实验--电梯调度 VC++实现
- 动态分区分配方式,C语言实现的
- 进程调度的设计与实现图形界面实现
- 模拟动态分区的分配与回收首次适应
- 操作系统实验——spooling技术
- C语言实现调度算法源代码-山东大学操
- 计算机操作系统实验报告,C语言实现
- 操作系统实验报告处理机调度算法的
- 安徽大学操作系统实验九最终考试内
- nachos操作系统实验三
- NUR算法和OPT算法实现-----操作系统实验
- 进程同步操作系统实验三,带实验报
- 操作系统实验-计算机进程管理和进程
- 操作系统 动态分区存储管理方式的
- 操作系统实习:动态分区分配C++实现
评论
共有 条评论