《操作系统》第五章 虚拟存储器

第五章

5.1 虚拟存储器的概述

5.1.1 常规存储管理方式和局部性原理

1.常规存储器管理方式的特征
(1)一次性
(2)驻留性

2.局部性原理
(1)时间局限性
如果程序中的某条指令被执行,则不久以后该指令可能再次执行;如果某数据被访问过,则不久以后该数据可能再次被访问。
(2)空间局限性
一旦程序访问了某个存储单元,在不久之后,其附近的存储单元也将被访问,即程序在一段时间内所访问的地址集中在一定的范围之内。

3.虚拟存储器的基本工作情况
程序运行时,如果它要访问的页(段)已调入内存,便可继续执行下去,但如果程序要访问的页(段)尚未调入内存。便发出缺页(段)中断请求,此时OS将利用请求调页(段)功能将它们调入内存,以便进程能继续执行下去。如果此时内存已满,无法再装入新的页(段),OS还须再利用页(段)的置换功能,将内存中暂时不再的页(段)调至盘上,腾出足够的内存空间,再将要访问的页(段)调入内存,使程序继续执行下去。

5.1.2 虚拟存储器的定义和特征

1.定义
指具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统。

2.特征
(1)多次性
一个作业中的程序和数据无需在作业运行时一次性地全部装入内存,而是允许被分成多次调入内存运行。
(2)对换性
允许将那些暂时不使用的代码和数据从内存调至外存的对换区,待以后需要时再将它们从外存调至内存。
(3)虚拟性
从逻辑上扩充内存容量。可以在小的内存上运行大的作业。

5.2 请求分页存储管理方式

5.2.1 请求分页中的硬件支持

1.请求页表机制
请求分页系统中的每个页表含以下诸项:
页号
物理块号
状态位P:指示该页是否已调入内存。
访问字段A:记录本页在一段时间内被访问的次数,或记录本页最近已有多长时间未被访问,提供给置换算法在选择换出页面时参考。
修改位M:标识该页在被调入内存后是否被修改。由于内存中的每一页在外存上保留一份副本,因此,在置换该页时,若未被修改,就不需要将该页写回到外存上。
外存地址:用于指出该页在外存上的地址,通常是物理块号。

2.缺页中断机构
在请求分页系统中,每当所要访问的页面不在内存时,便产生一缺页中断,请求OS将所缺页调入内存。并且要保护CPU环境、分析中断原因、转入缺页中断程序进行处理,以及在中断处理完成后再恢复CPU环境等。

5.2.2 页面调入策略

1.何时调入页面
(1)预调页策略
在程序运行时一次调入若干个相邻的页。

(2)请求调页策略
在需要时才调入缺页,且每次仅调入一页。

5.3 页面置换算法

5.3.1 最佳置换算法和先进先出置换算法

1.最佳置换算法 (Optimal)
其选择的被淘汰页面将是以后永不使用的,或是最长时间内不再被访问的页面。但由于无法预知,因而该算法无法实现。

2.先进先出页面置换算法(FIFO)
总是淘汰最先进入内存的页面

5.3.2 最近最久未使用和最少使用置换算法

1.最近最久未使用置换算法(Least Recently Used) LRU
淘汰最近最久未使用的页面
需要硬件支持,须有寄存器和栈两类硬件之一的支持

2.最少使用置换算法(Least Frequently Used) LFU
淘汰一定时期内被访问次数最少的页

LRU和LFU的区别:
LRU是看页面最后一次使用到发生调度的时间长短,而LFU是在看一段时间内页面被使用的频率

5.3.3 Clock置换算法

1.简单的 Clock 置换算法
实际中大多采用LRU算法。Clock是LRU算法中用的较多的一种LRU近似算法。
该算法在每页中设置一位访问位,再将内存中的所有页面都通过链接指针链接成一个循环队列。当某页被访问时,其访问位置1。置换算法在选择一页淘汰时,只需检查页的访问位,是0则淘汰,是1则检查下一页,若检查到最后一个页面,其位仍是1,则返回队首去检查第一个页面。

2.改进型 Clock 置换算法
在将一个页面换出时,如果该页已被修改过,须将该页重新写回磁盘上,但如果未被修改过,则不必将它拷回磁盘。换而言之,对于修改过的页面,在换出时所付出的开销比未修改过的页面大。于是在改进的Clock置换算法中增加了一个修改位,这样,在选择页面换出时,既要是最近未使用过的页面,又要是未被修改过的页面。

假设访问位为A和修改位为M:
1. A=0,M=0 表示该页最近未被访问并且未被修改,是最佳淘汰页。
2. A=0,M=1 表示该页最近未被访问,但已被修改,并不是很好的淘汰页。
3. A=1,M=0 表示该页最近被访问过,但未被修改,该页有可能再被访问。
4. A=1,M=1 表示最近已被访问且被修改,该页可能再被访问。

猜你喜欢

转载自blog.csdn.net/swpu_ocean/article/details/80444051