ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:400.15KB ,
资源ID:10839176      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10839176.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(模拟设计动态分区存储管理中地址转换.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

模拟设计动态分区存储管理中地址转换.docx

1、模拟设计动态分区存储管理中地址转换课程设计任务书学生姓名: 专业班级: 指导教师: 工作单位: 计算机科学与技术学院 题 目: 模拟设计动态分区存储管理中地址转换初始条件:1预备内容:阅读操作系统的内存管理章节内容,理解动态分区的思想,并体会动态分区分配主存的过程。2实践准备:掌握一种计算机高级语言的使用。要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1要求首先采用动态分区方案,用最先适用算法对作业实施内存分配,然后把作业地址空间的某一逻辑地址转换成相应的物理地址。能够处理以下的情形:输入某一逻辑地址,程序能判断地址的合法性,如果合法,计算并输出相应的物理地

2、址。如果不能计算出相应的物理地址,说明原因。2设计报告内容应说明: 课程设计目的与功能; 需求分析,数据结构或模块说明(功能与框图); 源程序的主要部分; 测试用例,运行结果与运行情况分析; 自我评价与总结:)你认为你完成的设计哪些地方做得比较好或比较出色;)什么地方做得不太好,以后如何改正;)从本设计得到的收获(在编写,调试,执行过程中的经验和教训);)完成本题是否有其他的其他方法(如果有,简要说明该方法);)对实验题的评价和改进意见,请你推荐设计题目。时间安排:设计安排一周:周1、周2:完成程序分析及设计。周2、周3:完成程序调试及测试。周4、周5:验收、撰写课程设计报告。(注意事项:严禁

3、抄袭,一旦发现,抄与被抄的一律按0分记) 指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日模拟设计动态分区存储管理中地址转换一 设计目的 (1)巩固及深入了解操作系统的基本概念与功能; (2)理解计算机系统的资源如何组织,操作系统如何有效地管理这些系统资源; (3)深入了解动态分区存储管理方式的内存分配以及地址转换的实现;(4)运用所学知识,实现最先适应法动态分区,实现对内存的保护、分配以及回收;(5)进一步理解在计算机系统上运行的其它各类操作系统,并懂得在操作系统的支持下建立自己的应用系统。 二 问题描述 要求首先采用动态分区方案,用最先适用算法对作业实施内存分配,然后把作业

4、地址空间的某一逻辑地址转换成相应的物理地址。能够处理以下的情形:输入某一逻辑地址,程序能判断地址的合法性,如果合法,计算并输出相应的物理地址。如果不能计算出相应的物理地址,并说明原因。三 功能描述及分析 存储器是计算机系统的重要资源之一。因为任何程序和数据以及各种控制用的数据结构都必须占用一定的存储空间,因此,存储管理直接影响系统性能。存储器由内存(primary storage)和外存(secondary storage)组成。内存由顺序编址的块组成,每块包含相应的物理单元。内存的特点:CPU能直接访问的存储器;用来存放系统和用户的程序和数据,其特点是存取速度快,存储方式是以新换旧,断电信息

5、丢失。 本设计要求模拟内存的动态分区管理。系统对内存的管理和控制通过数据结构分区说明表进行,分区说明表说明各分区号、分区大小、起始地址和是否是空闲区(分区状态)。内存的分配释放、存储保护以及地址变换等都通过分区说明表进行。并且把程序中的相对地址(或逻辑地址)转换为内存中的绝对地址(物理地址)。 四 关键技术与方法 4.1动态分区分配 所谓存储分配,主要是讨论和解决共享主存空间的问题:When,How,What(全部/部分信息分配在主存中)。存储分配有三种方式:直接分配、静态分配和动态分配。下面具体介绍动态分配的内容。 4.1.1动态分区基本思想 在作业执行前并不直接建立分区,分区的建立是在作业

6、的处理过程中进行的。且其大小可随作业或进程对内存的要求而改变,从而内存的利用率得到提高。在系统初启时,除了操作系统中常驻内存部分之外,只有一个空闲分区。随后,分配程序将该区依次划分给调度选种的作业或进程。图(2)给出了FIFO调度方式时的内存初始分配情况。 随着进程的执行,会出现一系列的分配和释放。比如在某一时刻,一进程执行结束并释放内存之后,管理程序又要为另两个进程分配内存。如果分配的空闲区比所要求的大,则管理程序将该空闲区分为两个部分,其中一部分成为已分配区而另一部分成为一个新的小空闲区。图(3)举例给出了最先优先适应算法(first fit)内存分配的过程。 4.1.2分区分配中的数据结

7、构 为了实现分区分配,系统中必须配置相应的数据结构,用来描述空闲分区和已分配分区的情况,为分配提供依据。常用的数据结构有以下三种形式: (a) 空闲分区表:在系统中设置一张空闲分区表,用于记录每个空闲分区的情况。每个空闲分区占一个表目,表目中包括分区序号、分区始址及分区的大小等数据项。 (b) 空闲分区链:为了实现对空闲分区的分配和链接,在每个分区的起始部分,设置一些用于控制分区分配的信息,以及用于链接各分区所用的前向指针;在分区尾部则设置一后向指针,通过前、后向链接指针,可将所有的空闲分区链接成一个双向链。为了检索方便,在分区尾部重复设置状态位和分区大小表目。当分区被分配出去以后,把状态位由

8、“0”改为“1”,此时,前、后向指针已无意义。 (c) 请求表:描述请求内存资源的作业或进程号及所请求的内存大小。 4.1.3动态分区分配算法 动态分区分配算法的关键:从空白区中寻找空闲空间是关键。 寻找空白区方法的不同:分区分配是对可用表(或自由链)数据结构进行操作,空闲区表的组织有两种方法:按空闲区大小的升序(降序)组织; 按空闲区首址升序组织。 动态分区时分配方法从可用表或自由链中寻找空闲区的常用方法有三种,分别是:最先适应算法(first fit)、最佳适应算法(best fit)和最坏适应算法(worst fit)。此处主要介绍最先适应算法。 最先适应算法FF算法要求空闲分区链以地址

9、递增的次序链接。在分配内存时,从链首开始顺序查找,直至找到一个大小能满足要求的空闲分区为止;然后再按照作业的大小,从该分区中划出一块内存空间分配给请求者,余下的空闲分区仍留在空闲链中。若从链首直至链尾都不能找到一个能满足要求的分区,则此次内存分配失败,返回。该算法倾向于优先利用内存中低址部分的空闲分区,从而保留了高址部分的大空闲区。这给为以后到达的大作业分配大的内存空间创造了条件。其缺点是低址部分不断被划分,会留下许多难以利用的、很小的空闲分区,而每次查找又都是从低址部分开始,这无疑会增加查找可用空闲分区时的开销。 4.1.4内存的回收 当进程运行完毕释放内存时,系统根据回收区的首址,从空闲区

10、链(表)中找到相应的插入点,此时可能出现以下四种情况之一: (1) 该空闲区的上下两相邻分区都是空闲区:将三个空闲区合并为一个空闲区。新空闲区的起始地址为上空闲区的起始地址,大小为三个空闲区之和。空闲区合并后,取消可用表或自由链中下空闲区的表目项或链指针,修改上空闲区的对应项。 (2) 该空闲区的上相邻区是空闲区:将释放区与上空闲区合并为一个空闲区,其起始地址为上空闲区的起始地址,大小为上空闲区与释放区之和。合并后,修改上空闲区对应的可用表的表目项或自由链指针 (3) 该空闲区的下相邻区是空闲区:将释放区与下空闲区合并,并将释放区的起始地址作为合并区的起始地址。合并区的长度为释放区与下空闲区之

11、和。同理,合并后修改可用表或自由链中相应的表目项或链指针。(4) 两相邻区都不是空闲区:释放区作为一个新空闲可用区插入可用表或自由链。 4.2内存地址转换 4.2.1逻辑地址 逻辑地址又称为相对地址或者虚地址:用户的程序经过汇编或编译后形成目标代码,目标代码通常采用相对地址的形式。其首地址为0,其余指令中的地址都相对于首地址来编址。不能用逻辑地址在内存中读取信息。 4.2.2物理地址 物理地址又称为绝对地址或者实地址:内存中存储单元的地址。把内存分成若干个大小相等的存储单元,每个单元占8位,即1字节(byte)。每个存储单元给一个编号。物理地址可直接寻址。 4.2.3地址映射 将用户程序中的逻

12、辑地址转换为运行时由机器直接寻址的物理地址。 当程序装入内存时,操作系统为该程序分配一个内存空间,由于程序的逻辑地址与分配到的内存物理地址不一致, 而CPU执行指令时,是按物理地址进行的,所以需要进行地址转换。 计算公式:物理地址逻辑地址装入内存的首地址 5.1需求分析 本次课程设计编程使用的是MFC,用户可以将进程分配至内存之中,内存的分配采用的是最先适应法。输入模拟的实际进程数目之后,系统随机产生进程的起始地址和申请空间的大小,输入要访问的进程号以及所要访问的逻辑地址,判断其是否超过进程大小。如果超过,则说明输入越界,反之进行物理地址计算。5.2数据结构 struct table /已分配

13、的或未分配的int start; /进程起始地址int length; /进程大小int hao; /进程号table*next;5.3主要算法框图 5.3.1最先适应法设计框图 5.3.2地址转换程序框图 否六 源程序的主要部分(伪代码) #include#include #include #include #define N 5/最大进程数#define max 20 /每个进程的最大容量#define memory 100 /整个内存大小struct table /已分配的或未分配的int start; /进程起始地址int length; /进程大小int hao; /进程号table

14、*next;int n; /实际的进程数table *head; /headvoid fenpei(int a) int sum=0; table *p1,*p2; p1=p2=new table; p1-start=1; p1-hao=1; srand(time(0); /seed Sleep(1000); p1-length=rand()%max+1; / random number 1-20 p1-next=NULL; coutstart lengthlength+sum; for(int m=2;mnext=p1; p2=p1; p1=new table; p1-start=sum+1

15、; p1-hao=m; Sleep(800); srand(time(0); p1-length=rand()%max+1; p1-next=NULL; coutstart lengthlength+sum; p2-next=p1; cout-endl; coutsum+1 100-sumhao!=b;t=t-next) if(c0)cout逻辑地址输入错误!t-length)coutVR越界!start+c; cout 物理地址为:maendl; int main() int i,j; coutn; if(n5)return 0; cout各进程的起始地址和申请的空间大小为:endl; fe

16、npei(n); do couti; if(in)return 0; coutj; panduan(i,j); while(i!=0); return 0;七 测试用例、运行结果与运行情况分析编译运行后,得到如下界面:输入实际进程数假定为5:假定访问进程3,则输入3:假定要访问的逻辑地址是5,则输入5:由于逻辑地址5已经超过申请的最大空间3,所以越界重新访问进程3,逻辑地址改为2:八 自我评价与总结 本次操作系统课程设计的题目是模拟设计动态分区存储管理中地址转换。设计要求我用最先适用算法对作业实施内存分配,然后把作业地址空间的某一逻辑地址转换成相应的物理地址。这个设计题目的难度相对来说不是很大

17、,通过复习课本和查阅其他资料,基本的设计方向非常明确。 通过这几天程序及报告编写,我发现了自己的很多问题,知识上有很多漏洞,实践经验比较缺乏,理论联系实际的能力还是比较薄弱。期间遇到了很多以前没有想到的难点,经过同学之间的相互讨论,解决了许多问题。通过此次实验,给我最大的体会是:做实验一定要细心,必须亲自动手实践;这样才能更好的体会实验的要领、原理。也让我深深的体会到了,自己本身知识的不扎实,以前上课一些东西都没有很好的掌握,通过动手实践及和同学的讨论当中使我更一步熟悉了内存中地址的转换、内存分配等等相关的一些基本知识以及与此次实验所连接到有关编成的一些知识等等。 本次实验有很多方法可以实现,但是由于时间的限制都无法得到拓展,设计题目应该加上对内存的回收这一块,这样题目才会更加清晰明了,目的性更明确一些。 路漫漫其修远兮,虽然本学期操作系统的课程结束了,但仍觉得自己还有很多东西要学,我会在自己在以后的学习生活中不断努力、不断提高,争取更大的进步。 九 参考文献 张尧学计算机操作系统教程(第三版) 清华大学出版社 吴国伟操作系统实验教程 大连理工大学出版社 闵联营 何克右C+程序设计教程 武汉理工大学出版社

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1