操作系统内存管理模拟系统的实现完整版

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

操作系统内存管理模拟

系统的实现

HUA system office room 【HUA16H-TTMS2A-HUAS8Q8-HUAH1688】

摘要

操作系统的内存管理是指系统软件对其他应用程序使用内存时所作的管理,是一种统筹关系。本设计采用活动分区方案,但不采用紧凑算法。假设系统内存容量为100KB。能处理内存回收的时候上下邻合并的问题;对随机出现的进程i申请jKB内存,程序能判断是否能分配;释放随机的首地址为Handle的内存块;同时输出内存使用情况和空闲情况。

关键字:内存资源;分配;存储管理;回收

目录

1 概述 (5)

1.1设计任务 (5)

1.2 设计思想 (5)

1.3 基础知识 (5)

2 各模块伪码算法 (7)

2.1主程序 (7)

2.2 创建进程模块 (9)

2.3 进程信息模块 (11)

2.4 进程申请模块 (12)

2.5 分区创建模块 (13)

2.6 内存分配模块 (15)

2.7 低级调度模块 (17)

3函数关系调用图 (19)

4测试结果 (20)

4.1 主界面调试结果 (20)

4.2 创建进程调试结果 (21)

4.3 进程信息调试结果 (22)

4.4 进程申请调试结果 (23)

4.5 分区创建调试结果 (24)

4.6 内存分配调试结果 (25)

4.7 内存回收调试结果 (26)

4.8 打印分区调试结果 (27)

4.9 低级调度调试结果 (28)

5源程序 (29)

6总结 (68)

参考文献 (69)

致谢 (70)

摘要

操作系统的内存管理是指系统软件对其他应用程序使用内存时所作的管理,是一种统筹关系。本设计采用活动分区方案,但不采用紧凑算法。假设系统内存容量为100KB。能处理内存回收的时候上下邻合并的问题;对随机出现的进程i申请jKB内存,程序能判断是否能分配;释放随机的首地址为Handle的内存块;同时输出内存使用情况和空闲情况。

关键字:内存资源;分配;存储管理;回收

1 概述

1.1设计任务

应用内存管理实现内存管理的分配和回收。能处理内存回收的时候上下邻合并的问题以及输出内存使用情况和空闲情况。

采用活动分区方案,但不采用紧凑算法。假设系统内存容量为100KB。要能处理内存回收的时候上下邻合并的问题;对随机出现的进程i申请jKB内存,程序能判断是否能分配;释放随机的首地址为Handle的内存块;要求输出内存使用情况和空闲情况。

根据给定的动态分区分配算法流程图,用熟悉的计算机编程语言编写一程序,该程序实现内存的合理分配后回收。

1.2 设计思想

通过本次课程设计,学习如何进行内存的分区管理,强化了对首次适应分配算法和分区回收算法的理解。此课设需要随机产生进程或者由用户输入进程相应信息,实现动态内存管理:设计主界面以灵活选择某算法。主要实现的算法有:首次适应算法、最佳适应算法、最坏适应算法和循环适应算法。实现的主要功能有:创建进程,查看进程信息,进程申请,分区创建,内存分配,内存回收,打印分区,低级调度等。

分析设计要求,根据老师给出的要求,我们需创建进程和分区,然后申请进程,然后再进行内存的分配与回收。

1.3 基础知识

内存是现代计算机系统运转的核心.内存由一大片连续的字或字节组成,每个字或字节都有自己的地址,CPU根据程序计数器的值从内存中取出指令,而取出的指令可能引发额外的操作,例如读取或存储特定的内存地址.举个例子,一个典型的指令执行周期如下:首先从内存中读取一条指令,然后解码这条指令,解码时可能会从内存中读取这条指令(例如间接地址运算)的操作数(operand),当这条指令完成对操作数的运算后,运算结果可能被存储到内存中.

2 各模块伪码算法

图2.1为总体结构流程图

2.1主程序

主函数既是程序的入口,又是程序的出口,通常我们还可以指定一个exit code再退出,以表明程序最后的结果是什么样的。由于主函数肩负着入口和出口的重任,所以最好不要把太多的细节方面的逻辑直接放在主函数内,这样不利于维护和扩展。主函数应该尽量简洁,具体的实现细节应该封装到被调用的子函数里面去。此主函数中包括很多功能模块,其中各功能模块用菜单方式选择,为我们提供了九个功能选项。如图2.1所示

2.2 创建进程模块

进程的创建也就有两种方式:一是由操作系统创建,二是由父进程创建。在系统启动时,操作系统会创建一些进程,他们承担着管理和分配系统资源的任务,这些进程通常被称为系统进程。系统允许一个进程创建新进程,新进程即为子进程,子进程还可以创建新的子进程,形成进程树结构。此创建进程模块可以输入自己想创建的进程数进而实现进程创建。如图2.2所示

图2.2 创建进程流程图

cout<<"输入进程数目:";cin>>ProcessNum;

tapplyIndex=new in[ProcessNum];初始化进程申请队列

assignPointer=new int[ProcessNum];//初始化进程分配队列

maxApplyNum=ProcessNum;

pro=randomCreatPro(ProcessNum);创建成功

2.3 进程信息模块

进程又称任务,是一个动态的使用系统资源、处于活动状态的应用程序。进程的管理由进程控制块PCB、进程调度、中断管理、任务队列等组成,它是linux文件系统、存储管理、设备管理和驱动程序的基础。进程控制块PCB中包含了进程的所有信息,主要包括进程PID、进程所占有的内存区域、文件描述符和进程环境等信息。如图2.3所示

图2.3 进程信息流程图

Ifpro==NULL

return ERROR

Forint i=0;i

Ifpro->status==0

cout<<"创建"

else if pro->status==1//进程状态

相关文档
最新文档