版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 模拟动态分区存储管理中地址转换实验目的深入了解动态分区存储管理方式的内存分配以及地址转换的实现。实验任务随机产生进程的个数及需要的空间,当某进程提出申请空间的大小后,显示能否满足申请,以及为该进程分配资源后有关地址转换的数据。系统功能需求分析系统对内存的管理和控制通过数据结构分区说明表进行,分区说明表说明各分区号、分区大小、起始地址和是否是空闲区(分区状态)。内存的分配释放、存储保护以及地址变换等都通过分区说明表进行。地址映射:把程序中的相对地址(或逻辑地址)转换为内存中的绝对地址(物理地址)。动态分区的基本思想:在作业执行前并不直接建立分区,分区的建立是在作业的处理过程中进行的,且其大小可
2、随作业或进程对内存的要求而改变。在系统初启时,除了操作系统中常驻内存部分之外,只有一个空闲分区。随后,分配程序将该区依次划分给调度选种的作业或进程。随着进程的执行,会出现一系列的分配和释放。比如在某一时刻,一进程执行结束并释放内存之后,管理程序又要为另两个进程分配内存。如果分配的空闲区比所要求的大,则管理程序将该空闲区分为两个部分,其中一部分成为已分配区而另一部分成为一个新的小空闲区动态地址重定位:是在程序执行过程中,在CPU访问内存之前,将要访问的程序或数据地址转换成内存地址。地址重定位机构需要一个(或多个)基地址寄存器BR和一个(或多个)程序虚拟地址寄存器VR。指令或数据的内存地址MA与虚
3、拟内存的关系为MA=(BR)+(VR)。地址转换的原因:当程序从外存进入内存时,原来的相对地址已经不能反映程序在内存中的实际地址了,因为程序在装入内存的过程中,它的装入地址不是由程序来选择的,而是由当前可用内存的实际情况来决定的,所以说,用程序地址编写的程序一旦送入内存,其程序地址和内存物理地址之间就存在一种对应关系。为使程序正常运行,需要将这种对应关系实施地址变换。动态创建分区:在装入程序和其执行过程中通过系统调用时都进行随机分配内存大小。程序的名字空间、地址空间和存储空间之间的关系存储空间开发平台系统:Windowsxp环境开发工具:VC编程语言:C+系统的功能设计内存初始分配情况:voi
4、dinit()/链表初始化,只有一个节点head=newtable;head-start=1;head-length=memory;head-state=false;head-next=NULL;boolfenpei(table*p)/分配进程boolfenpei(table*p)/分配进程动态重定位过程:设置基地址寄存器BR,虚拟地址寄存器VR。将程序段装入内存,且将其站用的内存区首地址送BR中。在程序段执行过程中,将所要访问的虚拟地址送入VR中。地址变换机构把VR和BR的内容相加,得到实际访问的物理地址。01410141内存空间虚拟空间内存空间动态分区时采用最先适应算法:该算法要求可用表或
5、自由链按起始地址递增的次序排列,从所找到的分区中化出所要求的内存长度分配给用户,并把余下的部分进行合并(如有相邻空闲区存在)后留在可用表中,但要修改其相应的表项。如图:返回分配起始地址该空闲区长度三?表目查完?该空闲区长度=SIZE?从该空闲区中截取所需大小,修改调整可用表从空闲区表的第一表目顺序表从可用表中移去该表目,调整可用表返回分配起始地址该空闲区长度三?表目查完?该空闲区长度=SIZE?从该空闲区中截取所需大小,修改调整可用表从空闲区表的第一表目顺序表从可用表中移去该表目,调整可用表取下一表项无法分配数据结构定义:#defineN10/最大进程数#definema10/每个进程的最大容
6、量#definememory100/整个内存大小structtable/已分配的或未分配的intstart;/进程起始地址intlength;/进程大小boolstate;/是否分配false:未分配true:已分配table*next;intn;/实际的进程数intbr;intvr;table*head;/headintrandom(inta,intb)/产生随机数从a到bunsignedintseedVal;structtimebtimeBuf;ftime(&timeBuf);seedVal=(unsignedint)timeBuf.time&0 xFFFF)+(unsignedint)t
7、imeBlitm厂(unsignedint)timeBlitm);srand(unsignedint)seedVal);intx=a+rand()%b-a+1;Sleep(10);returnx;voidfangwen(intbr,intvr)/模拟访问内存cout正在访问内存中.;Sleep(800);cout.;Sleep(800);cout.;Sleep(800);coutendl;for(intindex=0;index!=N;+index)br=random(1,N);vr=random(1,ma);cout用户程序正试图访问第br个进程空间中的第vr个单元l
8、ength=random(1,ma);if(fenpei(t)cout内存分配成功!endl;elsecout内存分配失败!endl;运行结果与运行情况分析由于产生的最大进程数为5,不存在第6个进程数,因此在访问第6个进程时发生BR越界。由于第5个进程被分配的内存为3个单元,因此不存在第5个单元,在访问该进程的第5个单元时发生VR越界。由于产生的最大进程数为3,不存在第8个进程数,因此在访问第6个进程时发生BR越界。自我评价与总结通过这次实验我深刻理解到,动态分区分配是根据进程的实际需要动态的为之分配内存空间,在实现可变分区分配时,将涉及到分区分配中所用的数据结构、分区分配算法和分区的分配操作
9、这样三个问题。而地址转换也就是地址重定位包括静态重定位和动态重定位。内存地址的集合称为内存空间或物理空间。内存中,每一个存储单元都与相应的成为内存地址的编号相对应。而把虚拟空间中已经链接和划分好的内容装如内存,并将虚拟地址映射为内存地址的问题就称之为重定位或地址映射。虽然上述的这些概念通过课本以及课堂上老师的讲解早已知道,但这“知道”并不是弄懂并理解透彻了,而通过这次实验才真正有了深刻的体会。本次实验我认为程序的运行结果很清楚明了的反映了随机产生进程以及内存分配的过程以及BR和VR越界的处理。然而由于我前面对面有关方面的知识掌握不够牢固以及C对+编程语言学习和实际运用的匮乏,此次的实验并没有预期的完美。首先,我本打算把每个进程进程编号,但考虑后续操作的复杂也就没有实施;再次,此次实验要求显示为该进程分配资源后有关地址转换的数据,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 财险业务建议课件
- 2026年安徽中医药高等专科学校高职单招职业适应性测试参考题库有答案解析
- 基因检测与精准医疗技术
- 2026年湖南工艺美术职业学院单招职业技能考试参考题库带答案解析
- 2026年福建艺术职业学院单招综合素质考试参考题库带答案解析
- 中医与现代医学结合研究
- 护理护理质量改进与提升
- 医院财务状况与预算执行总结
- 医院营养膳食管理人员职业素养
- XX公司年产10万吨铜加工(年产纯铜杆(无氧铜杆)7万吨、2万吨铜排、1万吨铜丝)项目环评报告表
- 2026年小学一二年级第一学期无纸笔化考核方案及测试题(一二年级语文数学)
- 2025四川金融控股集团有限公司招聘16人笔试参考题库附带答案详解(3卷合一)
- 2025年人文常识竞赛题库及答案
- 2025年时事政治试题库完整参考详解(完整版)及答案
- 学校副校长中层干部和群团组织负责人绩效考核实施细则
- 新车交车课件
- 太平保险项目经理资格考试大纲含答案
- 耳鼻喉科护士长2025年度述职报告
- 编程技术培训学校教学体系介绍
- 水产总碱度总硬度课件
- 2025年山东省东营市中考化学真题
评论
0/150
提交评论