已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
操作系统:实验一 可变分区存储管理/* 如不会使用文件输入/输出,也不会使用I/O转向做输入和输出结果文件, 可以手再抄输出结果后后再输到文件中,实验报告的文字内容由自己掌握, 能多能少。*/#include #include /* 表的定义 */#define N 5struct map unsigned m_size; char *m_addr;struct map coremapN;/* 首次适应的分配函数 */char *fmalloc(unsigned size) register char *a; register struct map *bp; for (bp = coremap; bp-m_size; bp+) if(bp-m_size = size) a = bp-m_addr; 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(0);/* 首次适应的释放函数 */ffree(unsigned size, char *aa) struct map *bp; char *a, *t; unsigned tt; a = aa; for (bp=coremap; bp-m_addrm_size!=0; bp+); if (bpcoremap & (bp-1)-m_addr+(bp-1)-m_size = a) /* 情况1,2 */ (bp-1)-m_size += size; /* 情况1 */ if (a+size = bp-m_addr) /* 情况2 */ (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) /* 情况3 */ bp-m_addr -= size; bp-m_size += size; else /* 情况4 */ if (size) do t = bp-m_addr; bp-m_addr = a; a = t; tt = bp-m_size; bp-m_size = size; bp+; while (size = tt); /* coremap表的初始化程序 */void initcoremap(char *addr, unsigned size) /* 初始化coremap数组,使其 第一项的m_addr指向用malloc申请到的addr, 第一项的m_size等于malloc申请的size, 其他各项清0 */* 输出表的内容 */void printcoremap() /* Function body: 打印coremap表中各项的m_size和m_addr */* 主程序的框架 */main() /* 定义变量 */ /* 用malloc向系统申请内存,如1000 */ /* 初始化coremap数组 */ /* 命令处理部分,如 m size :分配内存 f size addr : 回收内存 p : 打印coremap表 q : 退出 default: continue */ /* 调用free将用malloc申请到的内存释放 */操作系统:实验一 可变分区存储管理(答案)可变分区存储管理结构数组的形式: struct map unsigned m_size; /空间大小char * m_addr; /起始地址;struct map coremapN;源程序和执行结果。 #include #include struct mapunsigned m_size;char *m_addr;struct map coremap1000;struct map *pp;void print_map();void main();char *lmalloc(struct map *mp, unsigned size);void lfree(unsigned size, char *aa);struct map coremap1000;struct map *pp; char* lmalloc(struct map *mp, unsigned size) (register int a;register struct map *bp;int paddr=pp-m_addr; bp=pp; if (mp-m_size=0)return(0);if (!bp-m_size)bp=mp;doif (bp-m_size = size)a=bp-m_addr;bp-m_addr+=size;pp=bp;if (bp-m_size-=size) = 0)dobp+;(bp-1)-m_addr=bp-m_addr;while(bp-1)-m_size=bp-m_size);return (a);bp+;if (!bp-m_size)bp=coremap;while(bp-m_addr !=paddr); return (0);void lfree(unsigned size, char *aa) /释放空间并注意当前指针位置struct map *bp;char *a,*t;unsigned tt;a=aa;for (bp=coremap; bp-m_addrm_size!=0; bp+);if (bpcoremap&(bp-1)-m_addr+(bp-1)-m_size=a)(bp-1)-m_size+=size;if (a+size=bp-m_addr)if (pp=bp)pp=(bp-1);(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;elseif (a+size=bp-m_addr&bp-m_size)bp-m_addr-=size;bp-m_size+=size;elseif (size)dot=bp-m_addr;bp-m_addr=a;a=t;tt=bp-m_size;bp-m_size=size;bp+;while(size=tt);void print_map() /显示int n;if (coremap0.m_size=0)printf(The memory has been run out!);for (n=0; coremapn.m_addr!=NULL; n+)printf(%dth Addr is %d,Size is %dn,n,coremapn.m_addr,coremapn.m_size);void main()char ch;int a,b,c;coremap0.m_size=1000;coremap0.m_addr=500;pp=coremap;while(1)print_map();doch=getchar();while(ch=n|ch=t|ch= );switch(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浙江省金砖高中联盟2025-2026学年高一上学期11月期中考试政治试题含答案
- 2025年可再生能源及节能产品推广项目可行性研究报告及总结分析
- 2025年数字内容创作与变现平台可行性研究报告及总结分析
- 2025年青少年心理辅导中心投资可行性研究报告及总结分析
- 2025年虚拟现实旅游体验系统可行性研究报告及总结分析
- 2025年人工智能算法研究项目可行性研究报告及总结分析
- 研究报告论文摘要怎么写
- 南京大学文学院本科培养计划
- 研究生答辩修改意见范文
- 汉语言文学专业本科毕业论文题目大全
- 清雪施工方案
- 2025年江苏省职业院校技能大赛中职组(大数据应用与服务)考试题库(含答案)
- 高一英语必修一单词表湘教版
- 医药行业研发项目激励机制管理制度
- 冷库管理规章制度和管理制度
- 人教版(新教材)高中物理选择性必修2教学设计2:2 2 法拉第电磁感应定律教案
- 康养咨询项目合同
- 第04辑一轮阅读 专题10 阅读理解说明文选标题专练15篇(满分攻略+高考真题+名校模拟)-2025届新高三英语提分培优通关练(高考真题+名校模拟)教师版
- ASTM-D3359-(附著力测试标准)-中文版
- 第三单元 单元导语解读-部编版语文九年级上册
- CJT 3008.3-1993 城市排水流量堰槽测量标准巴歇尔水槽
评论
0/150
提交评论