操作系统-内存管理2

3.2 虚拟内存管理

3.2.1 基本概念

传统:一次性全部装入,一直驻留

局部性原理

时间局部性:当前执行的指令不久后可能再次执行

空间局部性:当前访问的数据不久后可能访问其邻近的数据

虚拟存储器

基于局部性原理,仅将少量页面存入内存

3.2.2 请求分页管理方式

页表机制

页表项结构:页号,物理块号,状态位,访问字段,修改位,外存地址

缺页中断机构

产生缺页中断

地址变换机构

从快表到页表再到外存

3.2.3 页框分配

驻留集大小

太小缺页率高

太大没意义

内存分配策略

固定分配局部置换:所有进程块数一样,自己换自己的

可变分配全局置换:

可变分配局部置换:

物理块调入算法

固定分配时有以下几种物理块分配算法

平均分配算法:

按比例分配算法:

优先权分配算法:

调入页面的时机

预调页策略

请求调页策略

从何处调入页面

如何调入页面

缺页中断

3.2.4 页面置换算法

最佳置换算法(OPT)

最长时间不被访问

先进先出置换算法(FIFO)

可能导致Belady异常(物理块增多,缺页数也增多)

最近最久未使用置换算法(LRU)

时钟置换算法

简单CLOCK

也叫最近未用算法(NRU):新增访问位,被访问时访问位设置为1。缺页时若为1则置为0,若为0则置换。

改进CLOCK

新增修改位。优先换未访问且未修改的页,其次换未访问但修改过的页。

3.2.5 抖动和工作集

抖动

抖动:频繁的页面调度行为,刚换入就要换出,刚换出就要换入。

抖动原因:进程太多,物理块太少

工作集

工作集:某段时间内,进程要访问的页面集合。

3.2.6 内存映射文件

内存映射可用于共享文件or进程通信

3.2.7 虚拟存储器性能影响因素

缺页率——页面大小,物理块数,置换算法和程序本身

页面大小

优点:内存碎片少,内存利用率高

缺点:缺页率高,页表长

优点:缺页率低,页表短

缺点:内部碎片大

物理块数

达到一定程度后增长不明显

置换算法

写回

把脏块存在一个链表上,到一定数量后一起写回磁盘,其他进程可直接从链表上读取

程序

局部化

3.2.8 地址翻译

略,从逻辑地址到物理地址的整个流程