【操作系统】第九章 虚拟内存

虚拟内存

两个效果

  1. 在主存中保留多个进程:由于对任何特定的进程都仅仅装入它的某些快,因此就有足够的空间放置更多进程。
  2. 进程可以比主存的全部空间还大:通过分段或分页的虚拟内存,可以获得巨大的主存,大小与磁盘储存器相关。

    

占有的是虚拟内存/逻辑地址

共享内存

 

 

 

按需调页

懒惰交换

调页程序pager:只是对进程的单个页进行操作

 

页面错误

第一步:页面错误的原因

1.非法访问

2.不在内存中

 

 

 

 

valid-invalid bit有效位

 

虚拟内存

两个特点:

 

在主存中保留多个进程

进程可以比主存的全部空间还大

需要的时候再载入

 

主要通过请求分页技术实现

当需要时载入物理内存运行

好处:

更少的IO,更少的内存,更快的响应速度,更多的用户。

 

Page Fault 页面错误

1.非法访问——终止

2.不在内存中——载入

 

写时拷贝COM

 

页面替换算法:

不再用的替换出来

 

问题:哪个页面是不再用的? 

 

脏位:

是否被修改过(0/1)

目的:降低额外开销,减少写入操作

 

FIFO

 算法:总是淘汰最先调入主存的那一页,或者说在主存中驻
留时间最长的那一页(常驻的除外)。
 理由:最早调入内存的页面,其不再被访问的可能性最大。 
 特点:实现简单、适合线性访问、对其他情况效率不高

Belady异常

 

 

在某些情况下会出现分配给进程的页面数增多,缺页次数反而增加的奇怪现象。

 

最优置换OPT

 算法:调入一页而必须淘汰一个旧页时,所淘汰的页应该是以后不再访问的页或距现在最长时间后再访问的页

 特点:不是实际可行的算法,可用来作为衡量各种具体算法的标准,具有理论意义

最近最少使用LRU

 算法:淘汰的页面是在最近一段时间里较久未被访问的那页。
 原理:根据程序局部性原理,那些刚被使用过的页面,可能马上还要被使用,而在较长时间里未被使用的页面,可能不会马上使用到

Counting Algorithms

计数器

 Keep a counter of the number of references that have been made to each page
 LFU Algorithm: replaces page with smallest count
 MFU Algorithm: based on the argument that thepage with the smallest count was probably justbrought in and has yet to be used
 

引用位

 

 

 


9.5 帧分配

全局置换

牺牲帧的选择范围:操作系统中的全部

不能控制其页错误率,但它通常会有更好的系统吞吐量

(总资源不变)一个人越来越多,其他人就会越来越少,其他人的页面错误率就会变大,总体错误率就会变高

局部置换

保持一定的错误率

只会在自己的内存中置换

但内存使用效率上可能会不太公平


 

抖动/颠簸Thrashing

进程很多,大量时间用于IO,忙于页面交换

死机,硬盘在快速运转(灯在闪)

如果分配的帧数少于现有局部的大小,那么进程会颠簸。

物理内存不足以让这几个页面载入,势必会产生大量的页面错误

 

局部是一个经常使用页的集合

工作集working set

空间局部性

 

如果所有工作集合之和的增加超过了可用帧的总数,那么操作系统会选择暂停一个进程。

该进程的页被写出,且其帧可分配给其他进程。

挂起的进程可以在以后重启。

 

工作集合知识能用于预先调页。

 


 

 

对于页面错误率的处理方案

可接受的页面错误率(定义上下界)

PFF

 

posted on 2020-07-02 11:58  中大网安维修师傅  阅读(356)  评论(0编辑  收藏  举报