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

加入VIP,省得不是一点点
 

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

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

下载须知

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

版权提示 | 免责声明

本文(操作系统原理课程设计报告-可变分区存储管理.doc)为本站会员(龙***)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

操作系统原理课程设计报告-可变分区存储管理.doc

1、1上海电力学院课程设计报告课程名称: 操作系统原理 题目名称: 可变分区存储管理 姓 名: 李鑫 学 号: 20103277 班 级: 2010251 同 组 姓 名: 无 课程设计时间: 2013.1.72013.1.11 评 语: 成 绩: 课程设计题目一、设计内容及要求(要求注明小组分工情况)2设计内容:可变分区存储管理。设计一个可变分区存储管理方案,模拟实现:主存的分配和回收,地址变换。输入:(1) 输入进程名称及使用内存的大小(创建进程) ;(2) 结束某一个指定的进程。(3) 逻辑地址。输出:显示内存使用状况;每一个进程占据的内存;物理地址。使用的分配算法包括:(1)首次适应算法;

2、(2)最佳适应算法;(3)最差适应算法;二、详细设计1)原理概述内存分配有固定分区分配方式和动态分区分配方式,固定分区分配是最简单的一种可以运行多道程序的存储管理方式。它是将内存空间划分为若干个固定大小的区域,在每个分区中只装入一道作业,它把用户空间划分为几个分区,允许有多道作业并发运行。它的分区划分方法有两种:1、分区大小相等,即使所有的内存分区大小相同。2、分区大小不等。它的分配方式存在缺点,即缺乏灵活性,浪费内存,如果一个进程申请很少的一块内存,那么它会占据整个内存分区,即使还有大部分空闲,例如一个进程有 5k,申请了分区号 4 的内存,虽然还有 123k 内存,但是其他进程也不可以利用

3、,只有进程结束了,其他进程才可以利用,内存十分浪费。分区号 起始地址 大小 状态1 20 12 已分配2 32 32 已分配3 64 64 已分配4 128 128 未分配在上边的基础上,便产生了可变分区分配方式。它是根据进程的实际需要,动态的为它分配内存空间,避免了上边的固定分区分配方式的缺点。它涉及到分区分配中所用的数据结构、分区分配算法和分区的分配与回收操作这三个问题。1、分区分配中的数据结构在这里我使用了空闲分区表。在系统中设置一张空闲分区表,用于记录每个空闲分区的情况。每个空闲分区占一个表目,表中包括了分区号、分区始址、分区大小、和一个代表它是空闲的状态。在系统中还有一张已分配表,用

4、于记3录已经分配给相应进程的内存,它的表目与空闲分区表一样,状态是已分配。2、分区分配算法A 首次适应算法(first fit)每次分配时,总是从未分配区表头顺序查找未分配表或链表,找到第一个能满足长度要求的空闲区为止。分割这个找到的未分配区,一部分分配给作业,另一部分仍为空闲区。这种分配算法优先利用主存低地址空闲分区,从而,保留了高地址的大的空闲区。但由于低地址空闲分区不断被分割,既可能将大的空间分割掉,也造成低地址部分有较多难以使用的“碎片” 。作为改进,可把空闲区按地址从小到大排列在未分配表或链表中,因为,为作业分配主存空间时从低地址部分的空闲区开始查找,可使高地址部分尽可能少用,以保持

5、一个大的空闲区,有利于大作业的装入。但是,这给回收分区带来一些麻烦,每次收回一个分区后,必须搜索未分配区表或链表来确定它在表格或链表中的位置且要移动相应的登记项。B最佳适应算法(best fit)该算法要扫描整个未分配区表或链表,从空闲区中挑选一个能满足作业要求的最小分区进行分配。这种算法可保证不去分割一个更大的区域,使装入大作业时比较容易得到满足。采用这种分配算法时可把空闲区按长度以递增顺利排列,查找时总是从最小的一个区开始,直到找到一个满足要求的分区为止。按这种方法,在回收一个分区时也必须对分配表或链表重新排列。最优适应分配算法找出的分区如果正好满足要求则是最合适的了,如果比所要求的略大则

6、分割后使剩下的空闲区就很小,以致无法使用。C最坏适应算法(worst fit)最坏适应分配算法要扫描整个未分配区表或链表,总是挑选一个最大的空闲区分割给作业使用,其优点是可使剩下的空闲区不至于太小,对中、小作业有利。采用这种分配算法时可把空闲区按长度以递减顺序排列,查找时只要看第一个分区能否满足作业要求,这样使最坏适应分配算法查找效率很高。3、分区分配操作它主要涉及到分区的分配内存和回收内存问题。A 分配内存B 回收内存内存回收有四种回收状态状态,比较复杂点。如下图:X 为将要回收的内存,A、B 为正在运行的进程,回收 X 有四种合并状态。4黑色区域为回收后的空闲内存。2)主要数据结构定义了内

7、存分区结构体,在此基础上定义了此结构体的对象 free100和 used100,分别表示空闲分区表和已分配的分区表,他们的最大值都是 100,而且结构也相同。Procnum 是全局变量,用于已分配的进程分区号,每个进程唯一。struct table int tablenum;/分区号int startaddr;/起始地址int length;/长度char state10;/分配状态;table free100;/空闲分区表table used100;/已分配分区表int freelength;/空闲分区表长度int usedlength;/已分配分区表长度int procnum=0;/进程分

8、区号3)算法(流程图)5可变分区存储管理系统显示内存空闲表和已分配表的状态1 创建进程进程名首次适应算法最佳适应算法最差适应算法2 结束进程3 地址转换 逻辑地址到物理地址4 退出程序状态流程图6从头开始查找空闲分区表解锁完毕? 返回空闲进程请求YN继续解锁下一个表项NY从该分区中划出进程请求的大小的内存空间将该分区分配各请求的进程修改相应的数据结构、空闲分区表、已分配分区表返回内存分配流程图4)源程序文件名os 课程设计 1#include#include struct table int tablenum;/分区号int startaddr;/起始地址int length;/长度char

9、state10;/分配状态;7table free100;/空闲分区表table used100;/已分配分区表int freelength;/空闲分区表长度int usedlength;/已分配分区表长度int procnum=0;/进程分区号void initial();/初始化分区void firstfit();/首次适应算法void bestfit();/最佳适应算法void worstfit();/最坏适应算法void terminal();/结束进程int transfer();/逻辑地址转换void print();/打印输出int main()cout“;cinn;switch

10、 (n)case 1:cout“;cins;switch (s)case 1:firstfit();break;case 2:bestfit();break;case 3:worstfit();8break;print();break;case 2:terminal();print();break;case 3:transfer();break;case 4:x=0;break;return 0;void initial()for (int i=0;i“;cinm;for (int i=0;i(物理地址)“; cinprocname; cinproclength;for(i=0;i=proclength) flag=1; if(flag=0) cout=proclength) t=1; i+; i-; usedusedlength.startaddr=freei.startaddr; strcat(usedusedlength.state,procname); usedusedlength.length=proclength; usedusedlength.tablenum=procnum;usedlength+;

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。