1 / 16
文档名称:

分区内存管理实验报告样稿.doc

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

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

分享

预览

分区内存管理实验报告样稿.doc

上传人:非学无以广才 2020/11/28 文件大小:126 KB

下载得到文件列表

分区内存管理实验报告样稿.doc

相关文档

文档介绍

文档介绍:洛阳理工学院试验汇报
系别
计算机和信息工程系
班级
B100503
学号
B10050309
姓名
赵贺龙
课程名称
计算机操作系统
试验日期
-11-1
试验名称
分区内存管理
成绩
试验目标:
经过这次试验,加深对内存管理认识,深入掌握内存分配、回收算法思想。
试验条件:

试验原理:
设计程序模拟内存动态分区内存管理方法。内存空闲区使用分区(说明)表进行管理,采取最先适应算法从分区表中寻求空闲区进行分配,内存回收时不考虑和相邻空闲区合并。
假定系统内存共640K,初始状态为操作系统本身占用40K。t1时刻,为作业A、B、C分配80K、60K、100K、内存空间;t2时刻作业B完成;t3时刻为作业D分配50K内存空间;t4时刻作业C、A完成;t5时刻作业D完成。要求编程序分别输出t1、t2、t3、t4、t5时刻内存空闲分区。
试验内容:
源代码:包含 ,

#include ""
#include ""
//进程Pcb类型及系统PCB表(次序表)描述
#define maxPCB 15
#define maxPart 10
#define TRUE 1
typedef struct
{
char name; //进程名
int address,len,valid;//进程所占分区起止和长度,
//该PCB有效标示 1有效,0无效。
}PCB;
typedef struct
{
PCB PCBelem[maxPCB];
int total;
}PCBseql;
//分区类型及分区说明表(次序表)描述
typedef struct
{
int address,len,valid;
}Part;
typedef struct
{
Part Partelem[maxPart];
int sum; //该时刻分区数
}Partseql;
void initPcb(PCBseql* vpcbl,int iosm); //初始化进程表vpcbl;
void initpart(); //初始化分区表vpartl;
void request(char name,int len); //进程name请求len大小内存
void release(char name); //回收进程name所占空间
void getprint(); //输出内存空闲分区
主程序:
#include ""
#include<>
int length = 640 ;//系统有640 空闲
PCBseql *pcbl = (PCBseql*)malloc(sizeof(PCBseql)); ;
Partseql *partl = (Partseql*)malloc(sizeof(Partseql));
void initPcb(PCBseql* vpcbl,int adr)
{
int i=1;
PCB *pcbelem;
int tel;
char c;
pcbelem=vpcbl->PCBelem;
while(TRUE)
{
printf("请输入第%d进程名称",i++);
vpcbl->total++;
scanf("%c",&(pcbelem->name));
printf("请输入进程所需内存");
scanf("%d",&tel);
pcbelem->len=tel;
pcbelem->address=adr+tel;
pcbelem->valid=1;
pcbelem++;
printf("是否要继续输入进程?(Y/y) 是/(N/n) 否");
fflush(stdin);
c = getchar();
fflush(stdin);
if(c=='N'||c=='n')
{
break;
}
}
}
void initpart()
{
char c,name;
int len;

printf("请输入你