




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
吉林大学操作系统实验报告班级: 7 姓名:姜秀连学号:55140727姓名姜秀连学号55140727实验项目 存储管理动态不等 长存储资源分配算法实验性质演示性实验 验证性实验 操作性实验 综合性实验实验地点机器编号指导教师实验时间2016年 6 月 14 日 一、实验综述1. 实验目的及要求理解动态异长存储分区资源管理,掌握所需数据结构和管理程序,了解各种存储分配算法的优点和缺点。实验内容分析UNIX最先适应(FF)存储分配算法,即map数据结构、存储分配函数malloc()和存储释放函数mfree(),找出与算法有关的成分。 修改上述与算法有关的成分,使其分别体现BF分配原则和WF分配原则。 2. 实验设备、软件PC,Linux 二、实验过程(实验步骤、记录、数据、分析)实验代码:#ifdef HAVE_CONFIG_H#include #endif#include #include #define MAPSIZE 100struct map /存储资源表结构 int m_addr; int m_size;struct map mapMAPSIZE; /存储资源表/BF存储分配函数int BF_malloc(struct map *mp,int size) register int a,s; register struct map *bp,*bpp; for(bp = mp; bp-m_size; bp+) if (bp-m_size = size) a = bp-m_addr; s = bp-m_size; for(bpp = bp; bpp-m_size; bpp+) /最佳适应 if(bpp-m_size = size & bpp-m_size m_addr; s = bpp-m_size; bp = bpp; bp-m_addr += size; if (bp-m_size -= size) = 0) do bp+; (bp-1)-m_addr = bp-m_addr; while(bp-1)-m_size = bp-m_size); return(a); return(-1);/WF存储分配函数int WF_malloc(struct map *mp,int size) register int a,s; register struct map *bp,*bpp; for(bp = mp; bp-m_size; bp+) if (bp-m_size = size) a = bp-m_addr; s = bp-m_size; for(bpp = bp; bpp-m_size; bpp+) /最坏适应 if(bpp-m_size s) a = bpp-m_addr; s = bpp-m_size; bp = bpp; bp-m_addr += size; if (bp-m_size -=size) = 0) do bp+; (bp-1)-m_addr = bp-m_addr; while(bp-1)-m_size = bp-m_size); return(a); return(-1);/存储释放函数void mfree(struct map *mp,int aa,int size) register struct map *bp; register int t; register int a; a = aa; for(bp = mp; bp-m_addrm_size != 0; bp+) ; if(bpmp & (bp-1)-m_addr+(bp-1)-m_size=a) /与前合并 (bp-1)-m_size += size; if (a+size = bp-m_addr) /前后合并 (bp-1)-m_size += bp-m_size; while (bp-m_size) bp+; (bp-1)-m_addr = bp-m_addr; (bp-1)-m_size = bp-m_size; else if (a+size = bp-m_addr & bp-m_size) /与后合并 bp-m_addr -= size; bp-m_size += size; else if (size) do /无合并 t = bp-m_addr; bp-m_addr = a; a = t; t = bp-m_size; bp-m_size = size; bp+; while (size = t); void init() struct map *bp; int addr,size; int i=0; bp=map; printf(Please input starting addr and total size:); scanf(%d,%d,&addr,&size); bp-m_addr=addr; bp-m_size=size; (+bp)-m_size=0; /表尾void show_map() int i=0; /system(clear); /清屏 struct map *bp; bp=map; printf(nCurrent memory map.n); printf(AddressttSizen); while(bp-m_size!=0) printf(n,bp-m_addr,bp-m_size); bp+; printf(n);main() int a,s; int c; int i; init(); printf(please input, b for BF, w for WF:); scanf(%c,&c); do show_map(); /显示存储资源表 printf(“please input, b for BF, w for WF, e for exit); printf(Please input,1 for request,2 for release,0 for exit:); scanf(%d,&c); switch(i) case 1: printf(Please input size:); scanf(%d, &s); if(c=b) /BF a=BF_malloc(map,s) else /WF a=WF_malloc(map,s) if(a=-1) printf(request cant be satisfiedn); else printf(alloc memory at address:%d,size:%dn,a,s); break; case 2: printf(Please i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 补偿合同(标准版)
- 西藏自治区财政厅直属事业单位招聘考试真题2025
- 临沧市乡村产业发展集团有限公司招聘考试真题2024
- 2025年度勘察设计注册环保工程师资格考试水污染防治复习题及答案
- 综合解析人教版八年级物理上册第5章透镜及其应用重点解析试卷(含答案详解)
- 2025年万科物业客服试题及答案
- 2025年道路运输企业主要负责人和安全生产管理人员考试(主要负责人)自测试题及答案
- 考点解析人教版八年级上册物理物态变化《熔化和凝固》章节练习试卷(详解版)
- 湖南省益阳市注册环保工程师考试(大气污染防治专业案例)全真模拟题库及答案(2025年)
- 2025年互联网营销师(直播销售员)四级理论考核试题及答案
- 《雪地寻踪》选择题及答案
- 《HSK六级辅导》课件
- 2024届绵阳市2021级高三一诊(第一次诊断性考试)文科综合试卷(含答案)
- 热处理工艺卡片
- 列宁:《唯物主义和经验批判主义》(对一种反动哲学的批判)(节选)
- 运筹学02375计算题经典题型全攻略
- 移动公司县级分公司总经理竞职演讲稿
- 投标评标项目经理答辩题库题
- JJG 564-2019重力式自动装料衡器
- GB/T 4889-2008数据的统计处理和解释正态分布均值和方差的估计与检验
- GB/T 15317-2009燃煤工业锅炉节能监测
评论
0/150
提交评论