三.内存管理
引入目的:更好的支持多道程序的并发执行,提高系统性能
主要功能:内存空间的分配与回收、存储的保护和共享、地址转换、内存扩充
存储的保护和共享就是说各道作业在各自的存储空间内运行,互不干扰
地址转换——在多道程序环境下,程序中的逻辑地址与内存中的物理地址不可能一致,因此存储管理必须提供地址变换功能,把逻辑地址转换成相应的物理地址。
内存的扩充——利用虚拟存储技术或自动覆盖技术,从逻辑上扩充内存
用户程序的主要处理阶段——
1.编译阶段:创建源文件
2.编译阶段:由编译程序将用户源代码编译成若干目标模块,生成目标文件
3.链接阶段:由链接程序将编译后形成的一组目标模块及所需的库函数链接在一起,形成一个完整的装入模块。生成可执行文件(形成逻辑地址)
4.装入阶段:由装入程序将装入模块装入内存运行
5.运行阶段:得到结果
相关概念
程序的装入——绝对装入(逻辑地址必须和实际的内存地址完全一样)、静态重定位(地址变换在装入时一次完成)、动态重定位(地址变换在执行程序的时候再完成)
程序的链接:静态链接、装入时链接、运行时链
地址空间
逻辑地址空间(地址空间从0开始)
物理地址空间(内存中物理单元的集合)
管理方式分为连续分配管理方式和非连续分配管理方式
连续分配管理方式:
单一连续分配 分配到内存固定的区域(有内部碎片,内部碎片就是有些内存空间没有被用上)
固定分区分配 分配到内存不同的固定区域,分区可以相等可以不等(内部碎片)
动态分区分配 是可变分区存储管理,按照程序的需要进行动态的划分。动态分区的分配策略算法——首次适应(最好空闲分区以地址递增的次序链接,分配内存时顺序查找,找到大小能满足要求的第一个空闲分区,缺点增大查找开销)、最佳适应(空闲分区按容量递增的方式形成分区链,找到第一个能满足要求的空闲分区,缺点外部碎片过多)、最坏适应(空闲分区以容量递增的次序链接,找到第一个能满足要求的空闲分区,既挑选出最大的分区,缺点对大进程不利)、领近适应(由首次适应算法演变而成。不同之处是,分配内存时从上次查找结束的位置开始继续查找)
非连续分配管理方式:基本分页式存储管理、基本分段式存储管理、段页式
内存扩充
1.覆盖(同一程序或进程中)
2.交换(不同进程/作业之间)
虚拟内存
引入原因:在逻辑上扩充内存
组成部分:页表机制、中断机制、地址变换机制、内存与外存
页面淘汰(置换)算法:
先进先出页面淘汰(置换)算法(FIFO)
最近最久未用页面淘汰(置换)算法(LRU)
最近最少用页面淘汰(置换)算法(clock)
最优(最佳)页面淘汰(置换)算法(OPT)
注意:页面淘汰是由缺页中断引起的,单缺页中断不见得一定引起页面淘汰
抖动:页面频繁的换进换出,原因分配给进程的进程快不足
页面分配策略:固定分区局部置换(物理块不变)、可变分区全局置换(动态增加物理块)、可变分区局部 置换(只允许从该进程的内存页面中挑选一页)