动态可变分区存储管理模拟系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
青岛农业大学
理学与信息科学学院
操作系统课程设计报告
设计题目仿真实现动态可变分区存储管理模拟系统—最佳适应算法和最先适应算法
学生专业班级计算机科学与技术2011级03班
学生姓名(学号)明珠(H20110684 )
设计小组其他同学姓名(学号)玉婷(H20110661)
宋璇(H20110162)
指导教师牟春莲
完成时间2014. 06.15
实习(设计)地点信息楼218
2014年6月16日
一、课程设计目的
操作系统的理论知识只有通过操作系统的实际操作和编程才能真正地理解和掌握,没有实践操作系统的操作和编程,学习操作系统就是纸上谈兵。操作系统课程设计是在学习完《操作系统》课程后进行的一次全面、综合实习,是计算机科学与技术专业的重要实践性教学环节。通过课程设计,达到如下目的:
1、巩固和加深对操作系统原理的理解,提高综合运用本课程所学知识的能力。
2、培养学生选用参考书,查阅手册及文献资料的能力;培养独立思考、深入研究、分析问题、解决问题的能力。
3、通过实际操作系统的分析设计、编程调试,掌握系统软件的分析方法和工程设计方法。
4、能够按要求编写课程设计报告书,能正确阐述设计过程和实验结果、正确绘制系统和程序框图。
5、通过课程设计,培养学生严谨的科学态度、严肃认真的工作作风和团队协作精神。
二、设计任务
题目描述:
仿真实现动态可变分区存储管理模拟系统。存调度策略可采用最先适应算法、最佳适应法等,并对各种算法进行性能比较。为了实现分区分配,系统中必须配
置相应的数据结构,用来描述空闲区和已分配区的情况,为分配提供依据。常用的数据结构有两种形式:空闲分区表和空闲分区链。为把一个新作业装入存,须按照一定的算法,从空闲分区表或空闲分区链中选出一个分区分配给该作业. 设计要求:
1.采用指定算法模拟动态分区管理方式的主存分配。能够处理以下的情形:⑴随机出现的进程i申请jKB存,程序能判断是否能分配,如果能分配,要求输出分配的首地址Faddress,并要求输出存使用情况和空闲情况。
存情况输出的格式为:Faddress该分区的首地址;Eaddress该分区的尾地址Len 分区长度;Process 如果使用,使用的进程号,否则为0。
⑵主存分配函数实现寻找空闲区、空闲区表的修改、已分配区表的修改功能。成员分工:
明珠申请存、查看进程之间的前后的区域状态、释放进程
玉婷最先适应算法、将其释放的存插入空闲块中、初始化
宋璇最佳适应算法、将新项插入已分配表中、退出
明珠宋璇玉婷整个界面的优化、界面设计、总体思路
三、分析与设计
1.设计思路
存储器是计算机的重要组成部分,存储空间是操作系统管理的宝贵资源,虽然其容量在不断扩大,但仍然远远不能满足软件发展的需要。对存储资源进行有效的管理,不仅关系到存储器的利用率,而且还对操作系统的性能和效率有很大的影响。
操作系统的存储管理的基本功能有:存储分配、地址转换和存储保护、存储
共享、存储扩充。存储分配指为选中的多道运行的作业分配主存空间;地址转换是把逻辑地址空间中的用户程序通过静态重定位或动态重定位转换和映射到分给的物理地址空间中,以便用户程序的执行;存储保护指各道程序只能访问自己的存储区域,而不能互相干扰,以免其他程序受到有意或无意的破坏;存储共享指主存中的某些程序和数据可供不同用户进程共享。
最简单的单道系统中,一旦一个程序能装入主存,它将一直运行直到结束。如果程序长度超出了主存的实际容量,可以通过覆盖和交换的技术获得解决。更多的操作系统支持多个用户进程在主存同时执行,能满足多道程序设计需要的最简单的存储管理技术是分区方式,有分固定分区和可变分区。可变分区的分配(如图(1)所示)算法包括:最先适应、下次适应、最佳适应、最坏适应和快速适应等分配算法。
图(1)动态存分配
采用分区方式管理存储器,每道程序总是要求占用主存的一个或几个连续的存储区域,主存中会产生许多碎片。因此,有时为了接纳一个新的作业而往往要移动已在主存的信息,这不仅不方便,而且开销不小。现代计算机都有某种虚存硬设备支持,简单也是常用的虚存是请求分页式虚存管理,于是允许把一个进程的页面
存放到若干不相邻的主存页框中。
从搜索速度上看,最先适应算法具有最佳性能。从回收过程来看,最先适应法也是最佳的。最先适应算法要求可用表或自由按起始地址递增的次序排列。该算法的最大特点是一旦找到大于或等于所要求存的长度的分区,则搜索结束。其优点:
(1)、在释放存分区时,如果有相邻的空白区就进行合并,使其成为一个较大的空白区;
(2)、本算法的实质是尽可能的利用存储器的低地址部分,在高地址部分则保留较多的或较大的空白区,以后如果需要较大的空白区,就容易能够满足。
最佳适应算法:从全部空闲区中找出能满足作业要求的、且大小最小的空闲分区,这种方法能使碎片尽量小。为适应此算法,空闲分区表(空闲区链)中的空闲分区要按从小到大进行排序,自表头开始查找到第一个满足要求的自由分区分配。该算法保留大的空闲区,但造成许多小的空闲区。
最佳适应算法将可利用空间表中一个大小不小于“请求”且最接近“请求”的空闲块的一部分分配给用户。分配与回收都需要对可利用空间表从头至尾查询一遍。为了避免每次分配都要查询整个链表,通常要求节点从大到小排序,由此只需找到第一个足够大的空闲块即可予以分配。但回收时,必须把回收的空闲块放置在符合大小顺序关系的链表位置。在分配时容易产生太小而无法利用的存碎片,同时这种做法也保留了那些很大的存块以备响应将来发生的存量较大的用户“请求”,从而使整个链表逐渐趋向于节点大小差别甚远的状态。这种分配算法适合请求分配存大小围较广的系统,此算法比较费时间。