您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > 计算机操作系统课程设计-内存管理
操作系统课程设计(内存管理)班级:学号:姓名:指导老师:一、设计目的操作系统课程主要讲述的内容是多道操作系统的原理与技术,与其它计算机原理、编译原理、汇编语言、计算机网络、程序设计等专业课程关系十分密切。本课程设计的目的综合应用学生所学知识,建立系统和完整的计算机系统概念,理解和巩固操作系统基本理论、原理和方法,掌握操作系统开发的基本技能。二、设计题目操作系统模拟软件的设计与开发三、设计内容(内存部分)模拟各种内存分配算法及回收过程,并能动态演示。结合进程调度算法,能为进程模拟分配内存,并设计一个跟踪该内存模拟分配的进程或线程,记录内存分配的结果四、设计的步骤(内存部分)1.总体设计:①存储管理:功能描述:存储管理负责完成对内存存储器的地址转换,采用最优适应算法完成对内存储器进行分配与去配,解决多用户对内存储器的共享和保护,通过软件手段,实现对内存储器容量的扩充。简要描述:可变分区管理方式预先不将内存划分成几个区域,而将内存除操作系统占用区域外的空间看作一个大的空闲区。存储管理部分,系统为提供了存储管理界面,用户可以实现内存空间的管理、内存分配、内存回收和存储保护操作。事件流当用户请求管理内存分配时,启用该用例,系统显示内存分配,内存回收和内存存储保护。当用户请求内存分配时,系统执行内存的分配;当用户内存使用完成后,系统执行内存的回收。内存分配出现问题时,需要执行对内存储器的保护。用户存储系统用例图存储管理内存的分配内存的回收存储的保护子用例图②内存空间的分配功能描述:源程序经过编译、链接、并装入内存后才能运行。内存空间的分配即对内存空闲区的分配。简要描述:可变分区管理方式预先不将内存划分成几个区域,而将内存除操作系统占用区域外的空间看作一个大的空闲区。当作业要求装入内存时,根据作业需要内存空间的大小查询内存内各个空闲区,当内存空间中找到一个大于或等于该作业大小的内存空闲区时,选择其中一个空闲区,按作业需求量划出一个分区装入该作业。事件流当用户请求管理内存回收时,启用该用例,系统显示内存分配,内存回收和内存存储保护。当用户请求内存分配时,系统执行内存的分配;当用户内存使用完成后,系统执行内存的回收。内存分配出现问题时,需要执行对内存储器的保护。作业在空闲区表中寻找一栏空闲区表中存在空闲栏空闲区表中不存在空闲栏主存分配失败此栏长度略大于或等于作业长度此栏长度比作业大很多分配空闲区给作业已分分区表中存在一栏为空将作业信息登记在已分分区表中切割空闲区已分分区表中不存在满足作业的空闲栏分配失败空闲表中不存在满足作业的空闲栏空闲区表中存在满足作业的空闲栏内存空间的分配图③内存空间的回收功能描述:实现回收时,将作业归还区域在已分配表中找到.将栏目状态变为‘空’.然后检查空闲区表中标志为“未分配”的栏目.查找是否有相邻空闲区;最后,合并空闲区,修改空闲区表。完成内存空间回收.简要描述:可变分区方式下回收内存空间时,首先将作业归还的区域在与分配表中找到,将该栏目的状态变为“空”;然后,检查空闲区表中标志为“未分配”的栏目,找到是否有相邻的空闲区;最后,合并空闲区,修改空闲区表。事件流当用户请求管理内存分配时,启用该用例,系统显示内存分配,内存回收和内存存储保护。当用户请求内存分配时,系统执行内存的分配;当用户内存使用完成后,系统执行内存的回收。内存分配出现问题时,需要执行对内存储器的保护。已分分区表某一作业要归还空间此作业不是已分配区表中的一栏此作业是已分配区表中的一栏有上临空闲区有下临空闲区上下临空闲区都有上下临空闲区都没有与上下临空闲区合并修改空闲区表与上临空闲区合并修改空闲区表与下临空闲区合并修改空闲区表是空闲区表一栏回收失败不是空闲表中一栏归还分区填入空闲区表内存空间的回收2.详细设计VeriableIndex类概述:这个类封装了变量到内存地址的映射关系,variable代表变量,index代变量在内存中的地址。作用:当用户的程序要运行时,系统将为用户定义的变量分配内存空间,并把每个变量的名字与它的地址封装在一个VeriableIndex类型的对象中,然后将这些VeriableIndex对象加入到一个队列中,当执行到改变变量值的语句时,就查询这个队列并找到相应变量对应的VeriableIndex对象,然后取出这个对象中保存的内存地址,再在内存中按此地址读出变量的值,接下来执行相应的操作后再放回到内存中去。举例说明:假如用户定义的程序段如下:VeriableIndex对象队列的指针将会被保存在PCB(进程控制块)中。DataTable类这个类实际上是构造了一个VeriableIndex的队列,这样为每一个进程创建VeriableIndex队列的时候便省去了很多不必要的麻烦。DataTable类这个类实际上是构造了一个VeriableIndex的队列,这样为每一个进程创建VeriableIndex队列的时候便省去了很多不必要的麻烦。Memory类概述:该类是为模拟内存而创建的,为了实现方便我们用了一个String类型的数组来模拟内存的大小,另外设置了一个PCB类型的数组来模拟系统区,系统X=5;X++;Y=6;Z=6;Y++;End;VeriableIndex队列的内容如下:VeribaleIndexOneVeriableIndexTwoVeriableIndexThreeXx地址YY地址ZZ地址区的大小正好可以容纳10个进程控制块。功能:响应用户申请PCB以及内存空间的请求,内存分配算法采用首次适应算法,用动态分区加以管理。具体来说,当用户申请内存时,如果尚有可以分配的内存空间则相应的方法会返回一个只包含两个元素的一维数组,数组的第一个元素是予以的内存的首地址,第二个元素是空间的大小;如果没有可以分配的内存空间则相应的方法会返回一个null值等待进一步的处理。当用户申请PCB时过程类似不再赘述。另外Memory类提供了对已经分配出去的PCB与内存空间进行回收的功能。当需要这些功能时调用相应的方法即可。PCB类概述:主要是为了模拟进程控制块,其中包含了进程标示符信息、进程控制信息、进程调度信息、处理机状态信息。为了方便起见,我们已经将它的所有实例域的访问性设为public。此类没有提供任何的构造方法,但是这丝毫不会影响到后继类对它的使用。鉴于篇幅我们在这里不便说明其中的原因。可以查阅有关JAVA中访问控制的相关章节。MemoryPanel类此类的设计目的是为了利于实现界面设计,它有一个Memory类型的私有实例域代表内存,而它的所有方法都是静态的,这样做的一个好处就是调用它的方法时无须构造一个对象,这就类似于C中的全局函数,在任何时候任何地方都能够被我们调用,我们应该注意到这些方法的签名与Memory中的对应方法相同,实际上他们正是间接调用了Memory中的相应方法。从某种意义上说,它的设计只是为了给我们使用Memory中的方法提供一种方便。对内存单元的外观显示我们是借助JButton来实现的,选用它有两个好处,一个是它的外观小巧精致,利于实现美观大方的界面。二是它除了可以设置背景颜色还可以设置内容显示,可以随时把内存单元中的内容作为一个字符串显示在JButton上,这样可以使我们的模拟操作系统更加形象地展现真实的操作系统是怎样访问内存单元的。当对内存单元进行读写时,相应的单元会通过动画来展示系统正在读或者写这个单元。3.运行界面:五:设计心得在这次课程设计中,我们的收获应该说是非常大的。在今后的学习中,一定要扩大自己的知识面,如:多从网上寻找可实现的项目,同学之间组成团队,多学习,自己用代码实现;还有就是要精通一们语言,熟练掌握其数据结构,算法思想,以至于能够熟练运用。应该说这是通过我们小组成员的共同努力和动脑完成的,虽然内容并不是很复杂,但是我们觉得设计的过程相当重要,学到了很多。我觉得课程设计反映的是一个从理论到实际应用的过程,但是更远一点可以联系到以后毕业之后从学校转到踏上社会的一个过程。小组人员的配合﹑相处,以及自身的动脑和努力,都是以后工作中需要的。
本文标题:计算机操作系统课程设计-内存管理
链接地址:https://www.777doc.com/doc-7233675 .html