没有合适的资源?快使用搜索试试~ 我知道了~
操作系统课程设计--连续动态分区内存管理模拟实现.doc
1 下载量 63 浏览量
2024-05-06
07:09:16
上传
评论
收藏 523KB DOC 举报
温馨提示
![preview](https://dl-preview.csdnimg.cn/89270398/0001-c96aaa4684fb8caed2aea5aced66c916_thumbnail-wide.jpeg)
![preview-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/scale.ab9e0183.png)
试读
27页
操作系统课程设计--连续动态分区内存管理模拟实现.doc
资源推荐
资源详情
资源评论
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/release/download_crawler_static/89270398/bg1.jpg)
(操作系统课程设计)
连续动态分区内存
管理模拟实现
目录
《操作系统》课程设计、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、 1
引言、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、3
课程设计目得与内容 、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、 3
需求分析、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、3
概要设计、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、3
开发环境、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、 4
系统分析设计、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、 4
有关了解内存管理得相关理论、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、 4
内存管理概念、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、4
内存管理得必要性、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、4
内存得物理组织、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、4
什么就是虚拟内存、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、5
连续动态分区内存管理方式、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、 5
单一连续分配(单个分区)、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、 5
固定分区存储管理、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、5
可变分区存储管理(动态分区)、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、 5
可重定位分区存储管理、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、5
问题描述与分析、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、6
程序流程图、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、6
数据结构体分析、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、8
主要程序代码分析、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、9
分析并实现四种内存分配算法 、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、 11
最先适应算、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、11
下次适应分配算法、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、13
最优适应算法、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、16
最坏适应算法、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、 、、、、、、18
回收内存算法、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、20
调试与操作说明、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、22
初始界面、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、22
模拟内存分配、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、23
已分配分区说明表面、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、24
空闲区说明表界面、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、24
![](https://csdnimg.cn/release/download_crawler_static/89270398/bg2.jpg)
回收内存界面、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、25
重新申请内存界面、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、26、
总结与体会、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、 28
参考文献、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、 28
引言
操作系统就是最重要得系统软件,同时也就是最活跃得学科之一。我们通过
操作系统可以理解计算机系统得资源如何组织,操作系统如何有效地管理这些系
统资源,用户如何通过操作系统与计算机系统打交道。
存储器就是计算机系统得重要组成部分,近年来,存储器容量虽然一直在不
断扩大,但仍不能满足现代软件发展得需要,因此,存储器仍然就是一种宝贵而又
紧俏得资源。如何对它加以有效得管理,不仅直接影响到存储器得利用率,而且还
对系统性能有重大影响。而动态分区分配属于连续分配得一种方式,它至今仍在
内存分配方式中占有一席之地。
课程设计目得与内容:
理解内存管理得相关理论,掌握连续动态分区内存管理得理论;通过对实际
问题得编程实现,获得实际应用与编程能力。
编写程序实现连续动态分区内存管理方式,该程序管理一块虚拟内存,实现
内存分配与回收功能。 分析并实现四种内存分配算法,即最先适应算法,下次最
先适应算法,最优适应算法,最坏适应算法。内存分配算法与回收算法得实现。
需求分析
动态分区分配就是根据进程得实际需要,动态地为之分配内存空间。在实现
动态分区分配时,将涉及到分区分配中所用得数据结构、分区分配算法与分区得
分配与回收操作这样三个问题。常用得数据结构有动态分区表与动态分区链。在
对数据结构有一定掌握程度得情况下设计合理得数据结构来描述存储空间,实现
分区存储管理得内存分配功能,应该选择最合适得适应算法(首次适应算法,最佳
适应算法,最后适应算法,最坏适应算法),在动态分区存储管理方式中主要实现内
存分配与内存回收算法,在这些存储管理中间必然会有碎片得产生,当碎片产生
时,进行碎片得拼接等相关得内容
概要设计
本程序采用机构化模块化得设计方法,共分为四大模块。
⑴最先适应算法实现
从空闲分区表得第一个表目起查找该表,把最先能够满足要求得空闲区分配
给作业,这种方法目得在于减少查找时间。为适应这种算法,空闲分区表(空闲区
链)中得空闲分区要按地址由低到高进行排序。该算法优先使用低址部分空闲区,
在低址空间造成许多小得空闲区,在高地址空间保留大得空闲区。
⑵下次适应分配算法实现
该算法就是最先适应算法得变种。在分配内存空间时,不再每次从表头(链
首)开始查找,而就是从上次找到空闲区得下一个空闲开始查找,直到找到第一个
![](https://csdnimg.cn/release/download_crawler_static/89270398/bg3.jpg)
能满足要求得得空闲区为止,并从中划出一块与请求大小相等得内存空间分配给
作业。该算法能使内存中得空闲区分布得较均匀。
⑶最优适应算法实现
它从全部空闲区中找出能满足作业要求得、且大小最小得空闲分区,这种方
法能使碎片尽量小。为适应此算法,空闲分区表(空闲区链)中得空闲分区要按从
小到大进行排序,自表头开始查找到第一个满足要求得自由分区分配。
⑷最坏算法实现
最坏适应分配算法要扫描整个空闲分区或链表,总就是挑选一个最大得空闲
分区分割给作业使用。该算法要求将所有得空闲分区按其容量从大到小得顺序形
成一空闲分区链,查找时只要瞧第一个分区能否满足作业要求。
开发环境:
win7 下 VC++6、0
系统分析设计:
相关算法原理,算法流程图,涉及得数据结构内容都相应包含在各章节中
有关了解内存管理得相关理论
内存管理概念:
内存管理,就是指软件运行时对计算机内存资源得分配与使用得技术。其最
主要得目得就是如何高效,快速得分配,并且在适当得时候释放与回收内存资源。
内存不就是预先划分好得,而就是在系统运行得过程中建立分区、当作业装入主
存时,根据作业所需要得主存容量查瞧就是否有足够得主存空间,若有则按需要
分割一个分区给该作业;否则令该作业等待、分区长度不固定分区个数不固定。
这种存储管理得方法克服了固定分区严重浪费主存得问题,提高了主存资源得利
用率。
内存管理得必要性:
内存管理对于编写出高效率得 Windows 程序就是非常重要得,这就是因
为 Windows 就是多任务系统,它得内存管理与单任务得 DOS 相比有很大得差
异。DOS 就是单任务操作系统,应用程序分配到内存后,如果它不主动释放,系统
就是不会对它作任何改变得;但 Windows 却不然,它在同一时刻可能有多个应
用程序共享内存,有时为了使某个任务更好地执行,Windows 系统可能会对其
它任务分配得内存进行移动,甚至删除。因此,我们在 Windows 应用程序中使
用内存时,要遵循 Windows 内存管理得一些约定,以尽量提高 Windows 内存得
利用率。
1、3 内存得物理组织:
物理地址:
把内存分成若干个大小相等得存储单元,每个存储单元占 8 位,称作字节
(byte)。每个单元给一个编号,这个编号称为物理地址(内存地址、绝对地址、
实地址)。二、物理地址空间: 物理地址得集合称为物理地址空间(主存地址空
间),它就是一个一维空间。
![](https://csdnimg.cn/release/download_crawler_static/89270398/bg4.jpg)
什么就是虚拟内存:
虚拟内存就是内存管理技术得一个极其实用得创新。它就是一段程序(由操作
系统调度),持续监控着所有物理内存中得代码段、数据段,并保证她们在运行中
得效率以及可靠性,对于每个用户层(user-level)得进程分配一段虚拟内存
空间。当进程建立时,不需要在物理内存件之间搬移数据,数据储存于磁盘内得虚
拟内存空间,也不需要为该进程去配置主内存空间,只有当该进程被被调用得时
候才会被加载到主内存。
连续动态分区内存管理方式得实现
在早期得操作系统中,主存分配广泛采用连续分配方式。 连续分配方式,就
是指为一个用户程序分配一个连续得内存空间,该连续内存空间指得得就是物理
内存。下面介绍连续分配得四种方式。
单一连续分配(单个分区)
最简单得存储管理方式,用于多道程序设计技术之前。 内存分为系统区与用
户区,系统区由操作系统使用。用户区作为一个连续得分区分配给一个作业。 分
区存储管理就是满足多道程序设计得最简单得一种存储管理方法,它允许多 4 个
用户程序同时存在系统内存中,即共享内存空间。 按分区划分方式可分为固定
分区与可变分区。
固定分区存储管理
把内存得用户区预先划分成多个分区,每个分区大小可以相同,也可以不同。
(分区得划分由计算机得操作员或者由操作系统给出,并给出主存分配表) 分区个
数固定,分区得大小固定。 一个分区中可装入一个作业,作业执行过程中不会改
变存放区域。 早期得 IBM 得 OS/MFT(具有固定任务数得多道程序系统)采
用了这种固定分区得方法。
可变分区存储管理(动态分区)
内存不就是预先划分好得,而就是在系统运行得过程中建立分区、当作业装
入主存时,根据作业所需要得主存容量查瞧就是否有足够得主存空间,若有则按
需要分割一个分区给该作业;否则令该作业等待。 分区长度不固定分区个数不
固定。 这种存储管理得方法克服了固定分区严重浪费主存得问题,提高了主存资
源得利用率。 IBM操作系统OS/MVT 采用可变分区存储管理。
可重定位分区存储管理
解决碎片问题得一种简单方法就是采用可重定位分区分配、。 其中心思想就
是,把不同程序,且在内存中地址不连续得想法让她们连续。
例:内存中现有 3 个空闲区,现有一作业到达,要求获得 30k 内存空间,没有
分区满足容量要求,若想把作业装入,可将内存中所有作业进行移动,这样把原来
分散得空闲区汇集成一个大得空闲区。 将内存中得作业进行移动使它们连接在
一起把原来分散得多个小分区拼接成一个大得空闲区、这个过程称为”紧凑”或”
移动”。 需解决得问题:每次”紧凑”后程序或数据装入得物理地址变化采用动
态重定位。
问题描述与分析
系统应利用某种分配算法,从空闲分区链表中找到所需大小得分区,如果空
闲分区大小大于请求分区大小,则从该分区中按改请求得大小划分出一块内存空
间大小划分出一块内存空间分配出去,余下得部分仍留在空闲链表中。然后,将
![](https://csdnimg.cn/release/download_crawler_static/89270398/bg5.jpg)
分配区得首址返回给调用者。
当进程运行完毕师范内存时,系统根据回收区得首址,从空闲区中找到相应
得插入点,此时可能出现以下四种情况之一:
⑴该空闲区得上下两相邻分区都就是空闲区:将三个空闲区合并为一个空闲
区。新空闲区得起始地址为上空闲区得起始地址,大小为三个空闲区之与。空闲
区合并后,取消可用表或自由链中下空闲区得表目项或链指针,修改上空闲区得
对应项。
⑵该空闲区得上相邻区就是空闲区:将释放区与上空闲区合并为一个空闲区,
其起始地址为上空闲区得起始地址,大小为上空闲区与释放区之与。合并后,修改
上空闲区对应得可用表得表目项或自由链指针。
⑶该空闲区得下相邻区就是空闲区:将释放区与下空闲区合并,并将释放区得
起始地址作为合并区得起始地址。合并区得长度为释放区与下空闲区之与。同理,
合并后修改可用表或自由链中相应得表目项或链指针。
⑷两相邻区都不就是空闲区:释放区作为一个新空闲可用区插入可用表或自由
链。
程序流程图
内存分配流程图,如图
剩余26页未读,继续阅读
资源评论
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/a98d4288f72742afbab41a0d2b2e653c_m0_38073539.jpg!1)
平头哥在等你
- 粉丝: 2
- 资源: 7461
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)