学习笔记——OS虚拟存储器

一、概述

       虚拟存储器从逻辑上实现对内存容量的扩充,让用户感觉到的内存容量比实际内存容量大得多。于是便可让比内存空间更大的程序运行,或者让更多的用户程序并发执行。

       要求将一个作业全部装入内存方可执行,会出现以下两种情况:

       1)有的作业很大,内存空间超过内存总存储量;

       2)有大量作业要求运行。

1.常规存储管理方式的特征

       (1)一次性:作业必须一次性地全部装入内存后才能开始运行。

       (2)驻留性:作业被装入内存后,整个作业都一直驻留在内存中,其中任何部分都不会被换出,直至作业运行结束。

正是上述两种特点,导致许多程序运行中不用或暂时不用的程序(数据)占据了大量的内存空间,而一些需要运行的作业又无法装入运行,浪费宝贵的内存资源。

2.局部性原理

在一短的时间内,程序的执行仅局限于某个部分,相应地,它所访问的存储空间也局限于某个区域。

(1)时间局限性。程序中的某条指令或数据被执行,则不久后该指令可能再次执行,因为存在大量循环结构;

(2)空间局限性。一旦程序访问某单元,则不久之后其附近的存储单元也将被访问,典型的顺序结构。

3.虚拟存储器的基本工作情况

       基于局部性原理可知,应用程序在运行之前没有必要将之全部装入内存,而仅需将那些当前要运行的少数页面或段先装入内存便可执行,其余部分留在盘上。

       程序运行时,若它要访问的页(段)已调入内存,便可继续执行下去;但若程序要访问的页(段)尚未调入内存(称为缺页或缺段),便发出缺页(段)中断请求,此时OS将利用请求调页(段)功能将它们调入内存,以便进程能继续执行下去。若此时内存已满,无法再装入新的页(段),OS还需再利用页(段)的置换功能,将内存中暂时不用的页(段)调至盘上,腾出足够的内存空间后,再将要访问的页(段)调入内存,使程序继续执行下去。

4.虚拟存储器的定义与特征

    (1)定义:所谓虚拟存储器,是指具有请求调入和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统。其逻辑容量由内存容量和外存容量之和决定,其运行速度接近于内存速度,而每位的成本却又接近于外存。

    (2)特征:

1)多次性:一个作业运行时,无需全部调入,需要时再请求调入;

2)对换性:一个作业运行时,无需常驻内存,将暂时不用的调出,等具备条件时重新调入;

3)虚拟性:从逻辑上扩充容量。

5.虚拟存储器的实现

利用请求分页系统和请求分段系统,实现虚拟存储:

(1)请求分页系统是在分页系统的基础上增加了请求调页功能和页面置换功能所形成的页式虚拟存储系统。允许用户程序只装入少数页面的程序(数据)即可启动运行。以后,通过调页功能以及页面置换功能陆续地把即将运行的页面调入内存,同时把暂时不用的页面换出到外存上。

1)硬件支持:请求分页的页表机制;缺页中断机构;地址变换机构

2)软件支持:用于实现请求调页的软件和实现页面置换的软件。在硬件的支持下,将程序正在运行时所需的页面(尚未在内存中的)调入内存,再将内存中暂时不用的页面从内存换出到磁盘上。

(2)请求分段系统同上。

6.页面调入过程

       每当程序所要访问的页面未在内存时,便向CPU发出一缺页中断,中断处理程序首先保留CPU环境,分析中断原因后转入缺页中断处理程序。该程序通过查找页表得到该页在外存的物理块后,若此时内存能容纳新页,则启动磁盘I/O操作,将所缺之页调入内存,然后修改页表。若内存已满,则按某种页面置换算法,从内存中选择某页调出,再将所要访问的页面调入内存。

7.抖动

      在页面置换过程中,最糟糕的情形是,刚刚换出的页面马上又要换入内存,刚刚换入的页面马上就要换出内存,称为抖动。以致于一个进程在运行中把大部分时间都花费在页面置换工作上,从而大大降低系统效率。

8.工作集

      工作集(或驻留集)是指在某段时间间隔内,进程要访问的页面的集合。经常被使用的页面需要在工作集中,而长期不被使用的页面要从工作集中被丢弃。为了防止系统出现抖动现象,需要选择合适的工作集大小。

二、页面置换算法

       如上面页面调入过程所述,当内存已满时,需选择某页调出内存,则选择该页的算法称为页面置换算法。一个好的页面置换算法应具有较低的页面更换频率。

1.最佳(Optimal,OPT)置换算法

其所选择的页面是以后永久不使用的,或在最长(未来)时间内不再被访问的页面。可保证最低的缺页率。因人们无法预知页面何时不使用,所以此算法无法实现,但可以用来评价其它算法。假设系统为某进程分配三个物理块:

上图所示,7、0、1页面依次放入三个物理块,访问2页面时缺页,置换7,因为0是第5个要访问的页面,1是第14个要访问的页面,7是第18个要访问的页面。后面执行同上算法。总共发生6次页面置换。

2.先进先出(FIFO)页面置换算法

该算法淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。实现简单,将进程调入内存的页面按先后顺序链接成一个队列。与进程运行规律不相适应,因为有些页面经常被访问。

上图所示,7、0、1页面依次放入三个物理块,访问2页面时缺页,置换7,因为7是最先调入的页面;访问3页面时缺页,置换0,因为0页面是2、0、1三个页面中最久的一个。后面执行同上算法。总共发生12次页面置换。

3.最近最久未使用(Least Recently Used,LRU)算法

       该算法根据页面调入内存后的使用情况作出决策。由于无法预测各个页面将来的使用情况,只能利用“最近的过去”作为“最近的将来”的近似,因此,LRU是选择最近最久未使用的页面予以淘汰。

上图所示,7、0、1页面依次放入三个物理块,访问2页面时缺页,置换7,因为7是最近最久未被访问的页面;访问3页面时缺页,置换1,因为1页面是最近最久未被访问的页面。后面执行同上算法。OPT是“向后看”,LRU是“向前看”。为了知道哪个页面是最近最久未被访问的页面,需要硬件的支持,如寄存器或栈。

4.最少使用(Least Frequently Used,LFU)置换算法

该置换算法选择在最近时期使用最少的页面作为淘汰页。LFU与LRU的页面访问图完全相同,只是硬件采用移位寄存器的方式。

5.时钟(Clock)置换算法

又称为最近未用(Not Recently Used,NRU)算法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值