当前位置:文档之家› 操作系统第六次 内存分配与回收模拟

操作系统第六次 内存分配与回收模拟

操作系统课程实验报告
First fit next fit
实验内容及关键步骤(代码)Q3(15分)
(1)First fit 代码运行结果#include<stdio.h>
struct not_empty//已分配分区表
{
char process_id;//作业标志符,此处采用-255的整数
int address_of_start;//起始地址
int size_of_notempty;//作业请求的内存单元数
int delete_or_not; //进程是否被创建,是否
} Not_Empty[20];
void printnow(char ram[]){//输出内存分配情况
int i;
for(i=1;i<=128;i++)
{
printf("%c",ram[i]);
if(i%11==0)
printf("\n");
}
printf("\n");
}
void printfree(char ram[]){//输出内存空闲区和内存空闲碎片
int i,flag=0,can_not_use=0;
printf("空闲区间为:\n");
for(i=1;i<=128;i++){
if(flag==0)
printnow(ram);
printf("1,分配;2,回收;\n3,内存占用情况图;4,退出;\n");
}
}
(2)next fit代码运行结果#include<stdio.h>
struct not_empty//已分配分区表
{
char process_id;//作业标志符,此处采用-255的整数
int address_of_start;//起始地址
int size_of_notempty;//作业请求的内存单元数
int delete_or_not; //进程是否被创建,是否
} Not_Empty[20];
void printnow(char ram[]){//输出内存分配情况
int i;
for(i=1;i<=128;i++)
{
printf("%c",ram[i]);
if(i%11==0)
printf("\n");
}
printf("\n");
}
void printfree(char ram[]){//输出内存空闲区和内存空闲碎片
int i,flag=0,can_not_use=0;
printf("空闲区间为:\n");
for(i=1;i<=128;i++){
if(flag==0)
{
if(ram[i]=='o')
{flag=i;printf("%d ",flag-1);}
}
else
{
if(ram[i]=='x'||i==128||(ram[i]>='0'&&ram[i]<='9')){
printf("%d\n",i-1);
if(i-1-flag<3)
can_not_use++;
flag=0;}
}
}printf("内存空闲碎片数为:%d\n",can_not_use);
}。

相关主题