操作系统专业课程设计连续动态分区内存管理模拟实现样本.doc
《操作系统专业课程设计连续动态分区内存管理模拟实现样本.doc》由会员分享,可在线阅读,更多相关《操作系统专业课程设计连续动态分区内存管理模拟实现样本.doc(31页珍藏版)》请在咨信网上搜索。
1、操作系统专业课程设计连续动态分区内存管理模拟实现(操作系统课程设计)连续动态分区内存 管理模拟实现 目录操作系统课程设计.1 引言.3 课程设计目的和内容 . 3 需求分析.3 概要设计.3开发环境. 4系统分析设计. 4有关了解内存管理的相关理论. 4内存管理概念.4 内存管理的必要性.4 内存的物理组织.4 什么是虚拟内存.5 连续动态分区内存管理方式. 5单一连续分配(单个分区). 5 固定分区存储管理.5可变分区存储管理(动态分区). 5 可重定位分区存储管理.5问题描述和分析.6程序流程图.6数据结构体分析.8主要程序代码分析.9分析并实现四种内存分配算法 . 11最先适应算.11
2、下次适应分配算法.13 最优适应算法.16 最坏适应算法. .18回收内存算法.20调试与操作说明.22初始界面.22模拟内存分配.23已分配分区说明表面.24空闲区说明表界面.24回收内存界面.25重新申请内存界面.26.总结与体会. 28参考文献. 28引言操作系统是最重要的系统软件,同时也是最活跃的学科之一。我们通过操作系统可以理解计算机系统的资源如何组织,操作系统如何有效地管理这些系统资源,用户如何通过操作系统与计算机系统打交道。存储器是计算机系统的重要组成部分,近年来,存储器容量虽然一直在不断扩大,但仍不能满足现代软件发展的需要,因此,存储器仍然是一种宝贵而又紧俏的资源。如何对它加以
3、有效的管理,不仅直接影响到存储器的利用率,而且还对系统性能有重大影响。而动态分区分配属于连续分配的一种方式,它至今仍在内存分配方式中占有一席之地。课程设计目的和内容: 理解内存管理的相关理论,掌握连续动态分区内存管理的理论;通过对实际问题的编程实现,获得实际应用和编程能力。 编写程序实现连续动态分区内存管理方式,该程序管理一块虚拟内存,实现内存分配和回收功能。 分析并实现四种内存分配算法,即最先适应算法,下次最先适应算法,最优适应算法,最坏适应算法。内存分配算法和回收算法的实现。需求分析动态分区分配是根据进程的实际需要,动态地为之分配内存空间。在实现动态分区分配时,将涉及到分区分配中所用的数据
4、结构、分区分配算法和分区的分配和回收操作这样三个问题。常用的数据结构有动态分区表和动态分区链。在对数据结构有一定掌握程度的情况下设计合理的数据结构来描述存储空间,实现分区存储管理的内存分配功能,应该选择最合适的适应算法(首次适应算法,最佳适应算法,最后适应算法,最坏适应算法),在动态分区存储管理方式中主要实现内存分配和内存回收算法,在这些存储管理中间必然会有碎片的产生,当碎片产生时,进行碎片的拼接等相关的内容概要设计本程序采用机构化模块化的设计方法,共分为四大模块。最先适应算法实现 从空闲分区表的第一个表目起查找该表,把最先能够满足要求的空闲区分配给作业,这种方法目的在于减少查找时间。为适应这
5、种算法,空闲分区表(空闲区链)中的空闲分区要按地址由低到高进行排序。该算法优先使用低址部分空闲区,在低址空间造成许多小的空闲区,在高地址空间保留大的空闲区。下次适应分配算法实现该算法是最先适应算法的变种。在分配内存空间时,不再每次从表头(链首)开始查找,而是从上次找到空闲区的下一个空闲开始查找,直到找到第一个能满足要求的的空闲区为止,并从中划出一块与请求大小相等的内存空间分配给作业。该算法能使内存中的空闲区分布得较均匀。最优适应算法实现它从全部空闲区中找出能满足作业要求的、且大小最小的空闲分区,这种方法能使碎片尽量小。为适应此算法,空闲分区表(空闲区链)中的空闲分区要按从小到大进行排序,自表头
6、开始查找到第一个满足要求的自由分区分配。最坏算法实现最坏适应分配算法要扫描整个空闲分区或链表,总是挑选一个最大的空闲分区分割给作业使用。该算法要求将所有的空闲分区按其容量从大到小的顺序形成一空闲分区链,查找时只要看第一个分区能否满足作业要求。开发环境: win7 下 VC+系统分析设计: 相关算法原理,算法流程图,涉及的数据结构内容都相应包含在各章节中有关了解内存管理的相关理论 内存管理概念: 内存管理,是指软件运行时对计算机内存资源的分配和使用的技术。其最主要的目的是如何高效,快速的分配,并且在适当的时候释放和回收内存资源。内存不是预先划分好的,根据作业所需要的主存容量查看是否有足够的主存空
7、间,若有则按需要分割一个分区给该作业;。这种存储管理的方法克服了固定分区严重浪费主存的问题,提高了主存资源的利用率。内存管理的必要性: 内存管理对于编写出高效率的 Windows 程序是非常重要的,这是因为Windows 是多任务系统,它的内存管理和单任务的 DOS 相比有很大的差异。DOS是单任务操作系统,应用程序分配到内存后,如果它不主动释放,系统是不会对它作任何改变的;但 Windows 却不然,它在同一时刻可能有多个应用程序共享内存,有时为了使某个任务更好地执行,Windows 系统可能会对其它任务分配的内存进行移动,甚至删除。因此,我们在 Windows 应用程序中使用内存时,要遵循
8、Windows 内存管理的一些约定,以尽量提高 Windows 内存的利用率。 内存的物理组织:物理地址: 把内存分成若干个大小相等的存储单元,每个存储单元占 8 位,称作字节(byte)。每个单元给一个编号,这个编号称为物理地址(内存地址、绝对地址、实地址)。二、物理地址空间: 物理地址的集合称为物理地址空间(主存地址空间),它是一个一维空间。 什么是虚拟内存: 虚拟内存是内存管理技术的一个极其实用的创新。它是一段程序(由操作系统调度),持续监控着所有物理内存中的代码段、数据段,并保证他们在运行中的效率以及可靠性,对于每个用户层(user-level)的进程分配一段虚拟内存空间。当进程建立时
9、,不需要在物理内存件之间搬移数据,数据储存于磁盘内的虚拟内存空间,也不需要为该进程去配置主内存空间,只有当该进程被被调用的时候才会被加载到主内存。连续动态分区内存管理方式的实现在早期的操作系统中,主存分配广泛采用连续分配方式。 连续分配方式,是指为一个用户程序分配一个连续的内存空间,该连续内存空间指的的是物理内存。下面介绍连续分配的四种方式。 单一连续分配(单个分区) 最简单的存储管理方式,用于多道程序设计技术之前。 内存分为系统区和用户区,系统区由操作系统使用。用户区作为一个连续的分区分配给一个作业。 分区存储管理是满足多道程序设计的最简单的一种存储管理方法,它允许多 4个用户程序同时存在系
10、统内存中,即共享内存空间。 按分区划分方式可分为固定分区和可变分区。 固定分区存储管理 把内存的用户区预先划分成多个分区,每个分区大小可以相同,也可以不同。(分区的划分由计算机的操作员或者由操作系统给出,并给出主存分配表) 分区个数固定,分区的大小固定。 一个分区中可装入一个作业,作业执行过程中不会改变存放区域。 早期的 IBM 的 OS/MFT(具有固定任务数的多道程序系统)采用了这种固定分区的方法。可变分区存储管理(动态分区) 内存不是预先划分好的,根据作业所需要的主存容量查看是否有足够的主存空间,若有则按需要分割一个分区给该作业;否则令该作业等待。 分区长度不固定分区个数不固定。 这种存
11、储管理的方法克服了固定分区严重浪费主存的问题,提高了主存资源的利用率。 操作系统采用可变分区存储管理。可重定位分区存储管理 解决碎片问题的一种简单方法是采用可重定位分区分配.。 其中心思想是,把不同程序,且在内存中地址不连续的想法让他们连续。例:内存中现有 3 个空闲区,现有一作业到达,要求获得 30k 内存空间,没有分区满足容量要求,若想把作业装入,可将内存中所有作业进行移动,这样把原来分散的空闲区汇集成一个大的空闲区。 ”紧凑”或”移动”。 需解决的问题:每次”紧凑”后程序或数据装入的物理地址变化采用动态重定位。 问题描述和分析系统应利用某种分配算法,从空闲分区链表中找到所需大小的分区,如
12、果空闲分区大小大于请求分区大小,则从该分区中按改请求的大小划分出一块内存空间大小划分出一块内存空间分配出去,余下的部分仍留在空闲链表中。然后,将分配区的首址返回给调用者。当进程运行完毕师范内存时,系统根据回收区的首址,从空闲区中找到相应的插入点,此时可能出现以下四种情况之一:该空闲区的上下两相邻分区都是空闲区:将三个空闲区合并为一个空闲区。新空闲区的起始地址为上空闲区的起始地址,大小为三个空闲区之和。空闲区合并后,取消可用表或自由链中下空闲区的表目项或链指针,修改上空闲区的对应项。 该空闲区的上相邻区是空闲区:将释放区与上空闲区合并为一个空闲区,其起始地址为上空闲区的起始地址,大小为上空闲区与
13、释放区之和。合并后,修改上空闲区对应的可用表的表目项或自由链指针。 该空闲区的下相邻区是空闲区:将释放区与下空闲区合并,并将释放区的起始地址作为合并区的起始地址。合并区的长度为释放区与下空闲区之和。同理,合并后修改可用表或自由链中相应的表目项或链指针。两相邻区都不是空闲区:释放区作为一个新空闲可用区插入可用表或自由链。程序流程图内存分配流程图,如图内存回收流程图,如图数据结构体分析进程属性结构体typedef struct readyque char name10; int size;readyque,*readyqueue;空闲链表结构体typedef struct idlyspace in
14、t from; int size; idlyspace * next;idlyspace,*idly;已分配链表结构体typedef struct busyspace int from; readyque r; busyspace * next;busyspace,*busy主要程序代码分析主函数/代码请添加适当的注释。int main() Is=(idly)malloc(sizeof(idlyspace); Is-from=0; Is-size=256; Is-next=NULL; Is2=Is; Bs=(busy)malloc(sizeof(busyspace); Bs-next=NULL
15、; int t,t1; printf(n.欢迎来到动态分区存储管理系统.nn); printf(.请选择要执行的算法:.n); printf(. .n); printf(. .n); printf(. .n); printf(. .n); printf(.n); printf(请输入您的选择:); scanf(%d,&t); int i; while(i!=5) printf(.n); printf(.操作菜单如下:(请选择).n); printf(. .n); printf(. .n); printf(. .n); printf(.n); printf(. 出 .n); printf(.n)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 专业课程 设计 连续 动态 分区 内存 管理 模拟 实现 样本
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。