首页 > 代码库 > 计算机操作系统学习笔记_8_内存管理 --虚拟内存管理
计算机操作系统学习笔记_8_内存管理 --虚拟内存管理
内存管理
--虚拟内存管理
一、虚拟内存基本概念
1.局部性原理
(1)时间局部性:程序中的某条指令一旦运行,不久以后该指令可能再次运行。产生时间局部性的典型原因是由于程序中存在着大量的循环操作。
(2)空间局部性:一旦程序访问了某个存储单元,不久以后其附近的存储单元也将被访问,其典型情况是程序顺序运行。
2.虚拟内存
基于局部性原理,应用程序在运行之前并不必全部装入内存,仅需将当前运行到的那部分程序和数据装入内存便可启动程序的运行,其余部分仍驻留在外存上。当要运行的指令或访问的数据不在内存时,再由操作系统通过请求调入功能将它们调入内存,以使程序能继续运行。如果此时内存已满,则还需通过置换功能,将内存中暂时不用的程序或数据调至盘上,腾出足够的内存空间后,再将要访问的程序或数据调入内存,使程序继续运行。
3.实现虚拟内存的基础
硬件基础 | 一定容量的内存; 大容量的外存; 地址变换机构(含快表); 缺页中断机构。 |
软件基础 | 虚实转换的数据结构(页表、段表等); 中断服务处理程序; 操作系统支持。 |
实现虚拟的方案:
页式虚存(请求分页:最常用)
段式虚存
段页式虚存
<style type="text/css">p { margin-bottom: 0.25cm; line-height: 120%; }</style>
4.虚拟内存的主要特征
(1)多次性。
(2)对换性。
(3)虚拟性。
二、请求分页管理方式
1.请求分页的基本原理
请求分页存储管理是在简单分页管理基础上发展起来的。请求页式管理在作业或进程开始执行之前,不要求把作业或进程的程序段和数据段一次性地全部装入内存,而只把当前需要的一部分页面装入内存,其它部分在作业执行过程中需要时,再从外存上调入内存。
2.页表的扩充
<style type="text/css">p { margin-bottom: 0.25cm; line-height: 120%; }页表的表项</style>
页表的表项
(1)存在位(present/absent):表示该页是否在内存。
(2)修改位(modified):该位为“0”时,在示访页面中的数据未被修改过。
(3)引用位(referenced):表示该页面在最近期间是否被访问引用过。
(4)外存地址(swaparea address):指出该页面在外存上的存放地址。
(5)其它:如页面保护位(protection),禁止缓存位(cachedisabled)等。
3.地址变换
请求分页的地址变换初始过程十分类似于简单分页系统的地址变换。
4.缺页中断处理
当存在位为0时,表示该页不在内存,则必须确定它在外存中的存放地址。并把它从外存中调入内存。若内存中没有空闲块时,首先按照某种策略选择某页进行淘汰。以腾出空闲块供本次调入的页占用。这个过程也被称之为页面置换。若被选中淘汰的页面中的信息修改过(修改位=1)还必须将其写回外存。如内存中有空闲块,则根据该页在外存的地址,调入所需页面,并更新页表表项,最后恢复被中断的指令重新执行。
5.调页策略
这是一个何时把页面装入内存的问题。如果出现缺页中断,表明企图对一个不存在于内存的页面要求访问。显然,应该立即装入该页面。这种仅当需要时才调取页面的策略,称为请求式调页,采用请求式调页策略的分页系统称为请求式分页;而把事先调取页面的策略称为预调页。
三、页面置换算法
1.随机淘汰算法
在无法确定那些页被访问的概率较低时,随机地选择某个用户的页面并将其换出。
2.先进先出算法(FIFO)
FIFO(firstin first out)算法:总是选择驻留内存时间最长的页面进行淘汰。其理由是:最早调入内存的页面,其不再被使用的可能性最大。
FIFO算法忽略了一种现象的存在,就是在内存中停留时间最长的页往往也是经常被访问的页。将这些页淘汰,很可能刚置换出去,又请求调用该页,致使缺页中断较频繁,严重降低内存的利用率。
FIFO的另一缺点是它有一种异常现象。称为Belady异常。
3.最佳置换算法(OPT)
最佳置换算法的基本思想是:从内存中移出永远不再需要的页面。
4.最近最久未使用页面置换算法(LRU)
这种算法的基本思想是,利用局部性原理,根据一个作业在执行过程中过去的页面访问历史来推测未来的行为。它认为过去一段时间里不曾被访问过的页面,在最近的将来可能也不会再被访问。
5.最近没有使用页面置换算法(NRU)
该算法只要求对应于每个存储块(页面)设置一个“引用位”和“修改位”。利用这二组织成四种状态,“引用位”:“修改位”=0:0;0:1;1:0;1:1。每次置换时,总取最小值的页面置换,若相同则随机置换或先进先出置换。
6.时钟算法(CLOCK)
时钟算法是将作业已调入内存的页面链成循环队列,使用页表中的“引用位”,用一个指针指向循环队列中的下一个将被替换的页面。
四、页面分配策略
1.固定分配局部置换策略
2.可变分配全局置换策略
3.可变分配局部置换策略
五、工作集
工作集也称为驻留集,是某一个进程调入物理内存的页面的集合,这些页面是频繁地被使用到的,因此长期驻留内存是有利于提高处理机的效率。工作集模型是基于局部性原理假设的。
六、抖动
如果分配给进程的存储块数量小于进程所需要的最小值,进程的运行将很频繁地产生缺页中断。这种频率非常高的页面置换现象称之为抖动(也称为颠簸)。往往是刚被淘汰的页面马上被选中调页而进入内存。抖动将引起严重的系统性能下降。
防止抖动现象有多种办法,例如,采取局部替换策略,引入工作集算法,挂起或撤销若干进程等。
计算机操作系统学习笔记_8_内存管理 --虚拟内存管理