77范文网 - 专业文章范例文档资料分享平台

内存管理实验报告

来源:网络收集 时间:2019-04-15 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

信息科学与技术学院实验报告

课程名称: 实验项目: 实验地点: 指导教师: 日期: 实验类型: (验证性实验 综合性实验 设计性实验) 专业: 计算机外包 班级: 14外三 姓名: 周鹏飞 学号: 1414104033

一、实验目的及要求

通过此次实验,加深对内存管理的认识,进一步掌握内存的分配,回收算法的思想。

二、实验仪器、设备或软件

Windows操作系统PC一台;VC++6.0

三、实验内容及原理

原理:设计程序模拟内存的动态分区内存管理方法。内存空闲区使用空闲分区表进行管理,采用最先适应算法从空闲分区表中寻找空闲区进行分配,内存回收时不考虑与相邻空闲分区的合并。

假定系统的内存共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

#define maxPCB 6 //最大进程数

#define maxPart 6 //最大空闲分区数

#define size 10 //不再切割剩余分区的大小

typedef struct PCB_type

{

char name;//进程名

int address;//进程所占分区首地址 int len;//进程所占分区的长度

int valid;//PCB标识符(有效,无效) }PCB;

Typedef struct seqlist //进程信息队列 {

PCB PCBelem[maxPCB];// maxPCB为为系统中允许的最多进程数 int total; //系统中实际的进程数 }PCBseql;//分区类型的描述

typedef struct Partition

{

int address;//分区起址 int len;//分区的长度

int valid;//有标识符(有效,无效) }Part;//内存空闲分区表(顺序表)描述

typedef struct Partlist //空白分区链 {

Part Partelem[maxPart];//maxPart为系统中可能的最多空闲分区数 int sum;//系统中世纪的分区数 }Partseql;//全局变量

PCBseql *pcbl;//进程队列指针 Partseql *part1;//空闲队列指针 #intclude “MainManager.h” void initpcb() //初始化进程表vpcb1 {

int i;

pcb1->PCBelem[0].address=0; pcb1->PCBelem[0].len=0;

pcb1->PCBelem[0].name=’s’; pcb1->PCBelem[0].valid=1; pcb1->total=0;

for(i=1;i

pcb1->PCBelem[0].name=’\\0’;

pcb1->PCBelem[0].address=0; pcb1->PCBelem[0].len=0; pcb1->PCBelem[0]. valid =0; }

}

void initpart() //初始化空闲分区表vpart1 {

int I;

pcb1->PCBelem[0].address=40; pcb1->PCBelem[0].len=600; pcb1->PCBelem[0]. valid =1; for(i=1;i

pcb1->PCBelem[0].address=0; pcb1->PCBelem[0].len=0;

pcb1->PCBelem[0]. valid =0; }

part1->sum=1; }

void request(char name,int len) //进程name请求len大小的内存 {

int i,j,k; int address;

for(i=0;isum;i++) {

if(partl->Partelem[i].len>=len) {

address=partl->Partelem[i].address; if(partl->Partelem[i].len-len>=size) {

partl->Partelem[i].address+=len;

partl->Partelem[i].len-=len; partl->Partelem[i].valid=1; } else {

for(j=i;j

{

partl->Partelem[j]=partl->Partelem[j+1]; partl->Partelem[j].valid=0; partl->Partelem[j].address=0;

partl->Partelem[j].len=0; partl->sum--; }

for (k=0;k

if (pcbl->PCBelem[k].valid==0)

{

pcbl->PCBelem[k].address=address;

pcbl->PCBelem[k].len=len;

pcbl->PCBelem[k].name=name; pcbl->PCBelem[k].valid=1; pcbl->total++; break; }

}

break; }

else printf(“内存紧张,暂时不予分配,请等候!”); } }

void release(char name) //回收name进程所占的内存空间 {

int i;

for(i=0;i

if(pcb1->PCBelem[i].name==ame) {

if (pcb1->PCBelem[i].valid==0)

printf(“%c进程非运行进程,无法结束!”,name); else

{

pcb->PCBelem[i].valid=0; pcb->total--;

part->Partelem[part1->sum].address=pcb1->PCBelem[i].address; part1->Partelem[part1->sum].valid=1; part1->sum++;

} } } }

void print()//输出内存空闲分区

{

int i;

printf(“当前的进程有:\\n”);

printf(“name address length\\n”); for(i=1;i

if(pcb1->PCBelem[i].name,pcb1->PCBelem[i].address,pcb->PCBelem[i].len); } printf(“当前的空闲分区有:\\n”); printf(“address length\\n”); for(i=0;i

if(part1->Partelem[i].valid==1)

printf(“%d %d\\n”,part1->Partelem[i].address,part1->Partelem[i].len); } }

void main() {

char ch;

char pcbname; int pcblen; PCBseql pcb; Partseql pcb;

Pcb1=%part; initpcb(); initpart();

printf(“\\t*********************MENU***********************\\n”); printf(“\\t***************** Enter:r 请求分配内存*******************\\n”)

printf(“\\t***************** Enter:s 进程结束*******************\\n”)

printf(“\\t***************** Enter:p 打印分配情况*******************\\n”)

printf(“\\t*****************

Enter:e

退

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库内存管理实验报告在线全文阅读。

内存管理实验报告.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/599407.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: