实验五 存储管理(实验报告格式)
更新时间:2023-09-16 15:31:01 阅读量: 高中教育 文档下载
- 实验五推荐度:
- 相关推荐
实验五: 存储管理
一、实验目的
(1)熟悉内存空闲分区的分配方式; (2)理解动态分区存储管理方式;
(3)掌握动态分区的分配与回收的过程。 二、实验环境
微型计算机,Ubuntu Linux10.04 ,gedit,gcc 三、实验内容
根据流程图和参考程序,完成模拟内存分配和回收过程。内存空间大小为100,
进程数为5,每个进程所需空间为随机产生,大小为1~20,编制程序,首先对5个进程进行内存分配,然后回收指定的进程空间,并进行适当的空闲分区合并操作,要求每次操作结束后都能显示当前的内存分配情况。
四、实验结果
截图一
截图二
截图三
五、源代码
#include
typedef struct MEMORY_BLOCK{
int name; //进程名 int address;
//起始地址
int length; //长度 int flag;
//标志,表示该块是否被分配。
struct MEMORY_BLOCK *next; //指向下一个进程
}MEMORY_BLOCK; #define NUM 5
#define LEN sizeof(MEMORY_BLOCK)
void allocation(MEMORY_BLOCK *Header,int name,int length_p){
MEMORY_BLOCK *temp,*t,*tt; int minsize=2;
//不可切割的分区阈值
t=Header; while(t!=0){
if(t->length>length_p&&t->flag==0) break;
t=t->next;
//分割
}if(t->length-length_p>minsize){
temp=(MEMORY_BLOCK*)malloc(LEN); temp->name=-1; temp->flag=0;
temp->length=t->length-length_p; temp->address=t->address+length_p; t->name=name; t->flag=1;
t->length=length_p; temp->next=t->next; t->next=temp;
//直接分配
}else{
t->name=name; t->flag=1; } }
void reclaim(int processname, MEMORY_BLOCK *Header){
MEMORY_BLOCK *temp,*t,*tt;
t=Header; temp=t;
while(t->name!=processname){
temp=t; t=t->next;
//t非尾结点
//左右为空
}if(t->next!=NULL){
if(temp->flag==0&&t->next->flag==0){
temp->name=-1;
temp->length=temp->length+t->length+t->next->length; tt=t->next;
temp->next=tt->next;
//左为空
}else if(temp->flag==0){
temp->name=-1;
temp->length=temp->length+t->length; temp->next=t->next;
//右为空
}else if(t->next->flag==0){
t->name=-1;
t->length=t->length+t->next->length; t->flag=0; tt=t->next; t->next=tt->next;
//左右不为空
}else{
t->name=-1; t->flag=0;
//t是尾结点
//左为空
}else{
if(temp->flag==0){
temp->name=-1;
temp->length=temp->length+t->length; temp=t->next;
}else{ //左不为空
t->name=-1;
}
void main(){
//主函数
}
}
t->flag=0;
int length_p,i,processname; MEMORY_BLOCK *Header,*t;
Header=(MEMORY_BLOCK*)malloc(LEN); //初始化存储空间 Header->name=-1; Header->address=0; Header->length=100; Header->flag=0; Header->next=NULL;
srand((int)time(0)); for(i=1;i<=NUM+1;i++){
length_p=rand() +1;
//随机产生进程所需存储空间,至少为1
allocation(Header,i,length_p); }printf(\当前内存分配情况:\\n\t=Header; while(t!=0){
printf(\>address,t->length,t->flag);
t=t->next;
}printf(\请输入回收的进程号(输入0结束):\\n\
scanf(\while(processname!=0){
printf(\回收 process name %d\\n\reclaim(processname,Header); printf(\当前内存分配情况:\\n\t=Header; while(t!=0){
printf(\t->address, }
t=t->next;
t->length,t->flag);






正在阅读:
实验五 存储管理(实验报告格式)09-16
小学生三年级关于元旦的作文06-12
ABB机器人RAPID指令中文翻译06-11
变压器纵联差动保护11-13
人教版九年级语文上册课文04-08
托福真题:托福作文范文185篇【专业】满分作文(1)07-02
周德路加强对历史教师生态意识教学的评价11-14
可折叠电动跑步机设计说明书03-10
父与女观后感04-01
- 2019届 城市内部空间结构及不同等级城市的服务功能(押题专练)-2
- 高考材料作文的总结
- 湖南省岳阳市第一中学培优班届高考物理第一轮复习补充资料第2单
- 最新高考化学全课时总复习资料(全高中 共302页 附答案)
- 上海高考作文议论文写作立意技巧之五----【多则材料的审题立意方
- 四川高考复习资料
- 高考以“绽放”为题的材料加命题作文导写
- 广西柳州高级中学2014年高考政治经济生活期末复习提纲
- 朱孝伟:2012年江苏高考作文阅卷汇报(文字稿)
- 山东省、湖北省部分重点中学2018届高三生物冲刺模拟试题(五)(含
- 2017-2018高中语文复习-高考议论文类模板
- 王雪:选准角度综合材料的内容和含意明确立意(精品)
- 这是我高考前自己整合的素材积累
- 高考优秀作文集锦
- 最新2018年高考化学模拟试题及答案4套(学生版)
- 新一轮高考改革下高中物理会考复习策略探讨
- 高中必修四-向量知识点总结及高考题型总结.
- 高中班级挑战书-高考挑战书
- 2019届高考历史第一轮知识点复习题21
- 9.12高考英语一轮复习资料 第十次课
- 实验
- 存储
- 格式
- 报告
- 管理
- 汽车租赁调度论文
- 红楼梦中的亲属称谓
- 吉林大学历年古代文学试题
- 材料力学电测实验报告书--2011
- 学校宣传片解说词
- 高职高专 实用英语 第一学期 期中考试参考答案及评分标准A卷
- 团队文化的培养与塑造
- 42号道岔安装作业指导书1 - 图文
- 火电厂锅炉分场检修专责员工先进事迹
- 配套K12四川省巴中市恩阳区2017届九年级历史10月月考试题
- 人事调动申请书范文
- 算法与程序部分复习试题精品资料
- 55项护理技术操作指导及考评标准(修)
- 计算机网络计算题练习
- 全新版大学英语综合教程1课后翻译题答案解析
- 河南煤矿
- 中国法制史 - 图文
- 工程制图全册复习要点
- 校本课程系列教材 - 中国的传统节日 - 图文
- 论中国古代德治思想在春秋战国时期的发展