三.内存管理

引入目的:更好的支持多道程序的并发执行,提高系统性能

主要功能:内存空间的分配与回收、存储的保护和共享、地址转换、内存扩充

 

存储的保护和共享就是说各道作业在各自的存储空间内运行,互不干扰

 

地址转换——在多道程序环境下,程序中的逻辑地址与内存中的物理地址不可能一致,因此存储管理必须提供地址变换功能,把逻辑地址转换成相应的物理地址。

内存的扩充——利用虚拟存储技术或自动覆盖技术,从逻辑上扩充内存

 

用户程序的主要处理阶段——

1.编译阶段:创建源文件

2.编译阶段:由编译程序将用户源代码编译成若干目标模块,生成目标文件

3.链接阶段:由链接程序将编译后形成的一组目标模块及所需的库函数链接在一起,形成一个完整的装入模块。生成可执行文件(形成逻辑地址)

4.装入阶段:由装入程序将装入模块装入内存运行

5.运行阶段:得到结果

 

相关概念

程序的装入——绝对装入(逻辑地址必须和实际的内存地址完全一样)、静态重定位(地址变换在装入时一次完成)、动态重定位(地址变换在执行程序的时候再完成

程序的链接:静态链接、装入时链接、运行时链

 

地址空间

逻辑地址空间(地址空间从0开始)

物理地址空间(内存中物理单元的集合)

 

管理方式分为连续分配管理方式和非连续分配管理方式

连续分配管理方式:

单一连续分配   分配到内存固定的区域(有内部碎片,内部碎片就是有些内存空间没有被用上)

固定分区分配    分配到内存不同的固定区域,分区可以相等可以不等(内部碎片)

动态分区分配    是可变分区存储管理,按照程序的需要进行动态的划分。动态分区的分配策略算法——首次适应(最好空闲分区以地址递增的次序链接,分配内存时顺序查找,找到大小能满足要求的第一个空闲分区,缺点增大查找开销)、最佳适应(空闲分区按容量递增的方式形成分区链,找到第一个能满足要求的空闲分区,缺点外部碎片过多)、最坏适应(空闲分区以容量递增的次序链接,找到第一个能满足要求的空闲分区,既挑选出最大的分区,缺点对大进程不利)、领近适应(由首次适应算法演变而成。不同之处是,分配内存时从上次查找结束的位置开始继续查找) 

 

非连续分配管理方式:基本分页式存储管理、基本分段式存储管理、段页式

 

内存扩充

1.覆盖(同一程序或进程中) 

2.交换(不同进程/作业之间)

 

虚拟内存

引入原因:在逻辑上扩充内存

组成部分:页表机制、中断机制、地址变换机制、内存与外存

 

页面淘汰(置换)算法:

先进先出页面淘汰(置换)算法(FIFO)

最近最久未用页面淘汰(置换)算法(LRU)

最近最少用页面淘汰(置换)算法(clock)

最优(最佳)页面淘汰(置换)算法(OPT)

注意:页面淘汰是由缺页中断引起的,单缺页中断不见得一定引起页面淘汰

 

抖动:页面频繁的换进换出,原因分配给进程的进程快不足

页面分配策略:固定分区局部置换(物理块不变)、可变分区全局置换(动态增加物理块)、可变分区局部  置换(只允许从该进程的内存页面中挑选一页)

原文地址:http://www.cnblogs.com/romablog/p/16861434.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性