第五章 虚拟存储器

一、虚拟存储器的基本概念

1、程序执行的特点:

1)多数情况下仍是顺序执行。

2)少部分的转移和过程调用指令会使程序执行由一部分区域转至另一部分区域

3)许多由少数指令构成的循环结构会多次执行。

4)对许多数据结构的处理(如数组)往往局限于很小的范围内。

2、程序执行的局部性:

1)时间局部性

2)空间局部性

3、交换技术与虚存使用的调入调出技术有何相同和不同之处?

1)主要相同点是都要在内存与外存之间交换信息;

2)主要区别在于交换技术换出换进一般是整个进程(proc结构和共享正文段除外),因此一个进程的大小受物理存储器的限制;

3)而虚存中使用的调入调出技术在内存与外存之间来回传递的是存储页或存储段,而不是整个进程,从而使得进程映射具有了更大的灵活性,且允许进程的大小比可用的物理存储空间大的多 。

4、虚拟存储器:具有请求调入功能置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统。

5、虚拟的实现建立在离散分配存储管理基础上

1)方式:请求分页/请求分段系统

2)细节:分页/段机构、中断机构、地址变换机构、软件支持

6、虚拟存储器的特征

1)多次性

2)对换性

3)虚拟性


二、请求分页存储管理方式

1、基本分页 +“请求调页”和“页面置换”功能。

2、页表基本功能不变:逻辑地址映射为物理地址

增加虚拟功能后需记录的页表项信息有变化

3、缺页中断机构:

每当要访问的页面不在内存时,便产生一缺页中断通知OS,OS则将所缺之页调入内存。

4、地址变换机构:

第五章 虚拟存储器_第1张图片

5、内存分配

(一)最小物理块数的确定

1、少于此数量进程将不能运行

2、与计算机的硬件结构有关,取决于指令的格式、功能和寻址方式

(二)物理块的分配策略

1、固定分配、局部置换

为每个进程分配一定数目的物理块,在整个运行期间不再改变

2、可变分配、全局置换

OS管理一个空闲物理块队列,发生缺页时,系统从队列中取出一块分配给该进程,将欲调入的页装入

3、可变分配、局部置换

缺页时,只允许换出该进程在内存的页面,不影响其他进程执行。

(三)物理块的分配算法

1、平均分配算法

将所有可供分配的物理块平均分配给各进程。

2、按比例分配算法

根据进程的大小按比例分配物理块。


6、调页策略

(一)何时调入页面

1、预调页策略

以预测为基础,将预计不久后便会被访问的若干页面,预先调入内存。

2、请求调页策略

运行中需要的页面不在内存,便立即提出请求,由OS将其调入内存。

(二)从何处调入页面

在请求分页系统中的外存分为:

对换区:连续存放数据,读写速度较快

文件区:离散分配方式,I/O速度相对慢

(三)页面调入过程

1、程序运行前需要装入内存:上述的②步策略处理何处调入;

2、开始运行:先预调入一部分页面;

3、运行中:需要的页面不在内存时,向CPU发出一缺页中断,“中断处理程序”开始工作


三、页面置换算法

1、页面置换算法:选择换出哪些页面的算法,其好坏直接影响系统的性能。

2、最佳Optimal置换算法、

换出以后永不再用的,或在最长(未来)时间内不再被访问的页面。

3、先进先出FIFO置换算法

先进入的先淘汰,即选择内存中驻留时间最久的页面予以淘汰。

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

LRU置换算法选择最近最久未使用的页面予以淘汰。

5、CLOCK置换算法

每个页设一个使用标志位,若该页被访问则将其置为1。

设置一个指针,从当前指针位置开始按地址先后检查各页,寻找use bit=0的页面作为被置换页。

6、最少使用置换算法

页设置访问计数器,每当页面被访问时,该页面的访问计数器加1;缺页中断时,淘汰计数值最小的页面,并将所有计数清零;

7、页面缓冲算法PBA

系统将页面放入两个链表之一:如果页面未被修改,就将其归入到空闲页面链表的末尾;否则将其归入到已修改页面链表。


四、虚拟存储管理下访问内存的有效时间

请求分页管理方式下,存在三种方式的内存访问

1、页在内存,且快表检索命中

EAT= l + t

2、页在内存,但快表检索没有命中

EAT=快表检索时间+访问页表时间+修改更新快表时间+访问页面物理内存时间=l +t+ l +t=2*(l +t)

3、页面不在内存

EAT=快表检索时间+访问页表时间+缺页中断处理时间+修改更新快表时间+访问页面物理内存时间

  =l + t + e + l  + t

4、加入概率的综合公式(a是快表命中率,f是缺页率)

EAT= l  + a*t +(1-a)*{    }

         =l  +a*t +(1-a)*{t + f*(e+l+t) +(1-f)*(l+ t)}


五、影响缺页率的主要因素

(1)分配给作业的主存块数:

  多则缺页率低,反之则高。

(2)页面大小:

  大则缺页率低;反之则高。

(3)页面调度算法:

  对缺页中断率影响很大,但不可能找到一种最佳算法。

(4)程序编制方法:

  以数组运算为例,如果每一行元素存放在一页中,则按行处理各元素缺页中断率低;反之,按列处理各元素,则缺页中断率高。


六、抖动

1、系统抖动:

为了提高处理机利用率,可增加多道程序并发度;

但进程数目增加过多,每个进程分配得到的物理块太少,在某个临界点上,会出现刚被淘汰的页很快又需重新调入;而调入不久又被淘汰出去;出现频繁缺页

大部分处理器时间都用在来回的页面调度上,这种局面称为系统抖动或颠簸(thrashing)

2、抖动的后果:

缺页率急剧增加

内存有效存取时间加长,

系统吞吐量骤减;系统已基本不能完成什么任务,而是忙于页面对换操作,cpu虽然忙,但效率急剧下降。

3、根本原因:

页面淘汰算法不合理;分配给进程的物理页面数(驻留集)太少。


七、请求分段存储管理方式

1、请求分段中的硬件支持

①段表机制

(1)存取方式:用于标识本分段的存取属性。R,R/W,W

(2)访问字段A:用于记录本段被访问的频繁程度。

(3)修改位M:表示该段在调入内存后是否被修改过。

(4) 存在状态位P :指示该段是否已调入内存。

(5)增补位:特有字段,表示该段运行中是否做过动态增长

(6)外存地址:用于指出该段在外存上的起始地址(盘块号)。

②缺段中断机构

缺段中断同样在一条指令的执行期间产生和处理中断,一条指令执行可能产生多次缺段中断。但不会出现一条指令被分割在两个分段中或一组信息被分割在两个分段中的情况。

③地址变换机构

增加了缺段中断的请求及处理等功能

2、分段的共享和保护

1)实现共享:共享段表

在内存中配置一张共享段表,每个共享段都占有一表项

2)共享段如何分享与回收

第一个请求使用该共享段的进程A:系统为该共享段分配一物理区,再把共享段装入该区

包括撤消在进程段表中共享段所对应的表项,执行count:=count-1

如果count为0,则由系统回收该共享段的物理内存,并取消共享段表中该段所对应的表项

3)分段保护

越界检查

存取控制检查

环保护机构

你可能感兴趣的:(第五章 虚拟存储器)