计算机操作系统 (第四版汤小丹老师) 复习笔记第五章

虚拟存储器作为现代操作系统中存储器管理的一项重要技术,实现了内存扩充功能。但该功能并非是从物理上实际地扩大内存的容量,而是从逻辑上实现对内存容量的扩充,让用户感觉到的内存容量比实际容量大得多。

5.1 虚拟存储器概述

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

常规存储器管理方式的特征,具有如下两个共同特征:

  1. 一次性:作业必须一次性地全部装入内存后方能开始运行。
  2. 驻留性: 作业被装入内存后, 整个作业都一直驻留在内存中,其中任何部分都不会被换出,直至作业运行结束。

局部性原理:程序运行时存在的局部性原理,很早就已被人发现,但直到1968年,才真正指出:程序在执行时将呈现出局部性规律,即在一较短时间内,程序的执行仅局限于某个部分,相应地,它所访问的存储空间也局限于某个区域。

局限性又表现在下述两个方面:

  1. 时间局限性
  2. 空间局限性

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

5.1.2 虚拟存储器的定义和特征
  1. 虚拟存储器的定义: 所谓虚拟存储器, 是指具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统
  2. 虚拟存储器的特征
    1.多次性
    2.对换性
    3.虚拟性

虚拟性是以多次性和对换性为基础的,或者说,仅当系统允许将作业分多次调入内存,并能将内存中暂时不运行的程序和数据换至盘上时,才有可能实现虚拟存储器;而多次性和对换性显然又必须建立在离散分配的基础上。

5.1.3 虚拟存储器的实现方法

所有的虚拟存储器都是采用下述方式之一实现的

  1. 分页请求系统,它允许用户程序只装入少数页面的程序及数据即可启动运行,以后,再通过调页功能及页面置换功能陆续地把即将运行的页面调入内存,同时把暂不运行的页面换出换到外存。置换时以页面为单位。为了能实现请求调页和页面置换功能,系统必须提供必要的硬件支持和实现请求分页的软件。

主要的硬件支持有:请求分页页表机制,缺页中断机构,地址变换机构。

  1. 请求分段系统,它允许用户程序只要装入少数段而非所有的段的程序和数据即可启动运行,以后通过调段功能和段的置换功能将暂不运行的段调出,再调入即将运行的段。置换是以段为单位进行的。为了实现请求分段,系统同样需要必要的硬件和软件支持。

硬件支持:请求分段的段表机制,缺段中断机构,地址变换机构。

5.2 请求分页存储管理方式

请求分页成为了目前最常用的一种实现虚拟存储器的方式

5.2.1 请求分页中的硬件支持
  1. 请求分页页表机制,在请求分页系统中需要的主要数据结构是请求页表
    访问字段A:用于记录本页在一段时间内被访问的次数,或记录本页最近已有多长时间未被访问,提供给置换算法在选择换出页面时参考
    修改位 M:标识该页在调入内存后是否被修改过。M位供置换页面时参考。

  2. 缺页中断机构
    在请求分页系统中,每当所要访问的页面不在内存时,便产生一缺页中断。缺页中断,是一种特殊的中断,它与一般的中断相比有着明显的区别,主要表现在下面两个方面:

    1. 在指令执行期间产生和处理中断信号
    2. 一条指令在执行期间可能产生多次缺页中断。基于这些特征,系统中的硬件机构应能保存多次中断时的状态,并保证最后能返回到中断前产生缺页中断的指令处继续执行。
  3. 地址变换机构,请求分页系统中的地址变换机构是在分页系统地址变换机构的基础上,为实现虚拟存储器,再增加了某些功能形成的,如产生和处理缺页中断,以及从内存中换出一页的功能。

5.2.2 请求分页中的内存分配
  1. 最小物理块数的确定,一个显而易见的事实是,随着每一个进程所分配的物理块的减少,将使进程在执行中缺页率上升,从而降低进程的执行速度。最小物理块数是指能保证进程正常运行所需的最小物理块,当系统为进程分配的物理块数少于此值时,进程将无法进行。
  2. 内存分配策略
    1. 固定分配局部置换,所谓固定分配,是指为每个进程分配一组固定数目的物理块,在运行期间不再改变,所谓局部置换,是指如果进程在运行中发现缺页,则只能从分配给该进程的n个页面中选出一页换出,然后再调入一页,以保证分配给该进程的内存空间不变。
    2. 可变分配全局置换,所谓可变分配,是指先为每一个进程分配一定数目的物理块,在进程运行期间,可根据情况做适当的增加或减少。所谓全局置换,是指如果进程在运行中发现缺页,则将OS所保留的空闲物理块,取出一块分配给该进程,或者以所有进程的全部物理块为标,选出一块换出,然后将所缺之页调入。
    3. 可变分配局部置换,为每个进程分配一定数量的物理块,但当某个进程发生缺页时,只允许从该进程在内存的页面中选择一页换出,这样就不会影响其他进程的运行。
  3. 物理块分配算法
    1. 平均分配算法
    2. 按比例分配算法
    3. 考虑优先权算法
5.2.3 页面调入策略

系统应在何时调入所需页面
系统应从何处调入这些页面
是如何调入的

  1. 何时调入页面
    为了确定系统将进程运行时所缺的页面调入内存的时机,可采取预调页策略或请求调页策略

  2. 预调页策略:是一种以预测为基础的预调页策略,将那些预计在不久以后便会被访的页面先调入内存。

  3. 请求调页策略:当进程在运行中需要访问某部分程序和数据时,若发现其所在的页面不在内存,便立即提出请求,由OS将其所需页面调入内存。

  4. 从何处调入页面
    将请求分页系统中的外存分为两部分:用于存放文件的文件区和用于存放对换页面的对换区。通常,由于对换区是采用连续分配方式,而文件区是采用离散分配方式,所以对换区的数据存取速度比文件区的高。这样,每当发生缺页请求时,系统应当从何处将缺页调入内存,可分成如下三种方式进行:

    1. 系统拥有足够的对换空间
    2. 系统缺少足够的对换空间
    3. unix方式,
  5. 页面调入的过程
    每当程序所要访问的页面未在内存时(存在位为"0")便向CPU发出一缺页中断,中断处理程序首先保留CPU环境,分析中断原因后转入缺页中断处理程序,该程序通过查找页表得到该外存的物理块后,如果此时内存能容纳新页,则启动磁盘I/O,将所缺之页面调入内存,然后修改页表。如果内存已满,则需按照某种置换算法,从内存中选出一页,准备换出,如果该页未被修改过,则可不必将该页写回磁盘,但如果此页已被修改,则必须将它写回磁盘,然后再把所缺的页调入内存,并修改页表中的相应的表现,置其存在位为“1”,并将此页表项写入快表中。

  6. 缺页率
    缺页率受到以下几个因素的影响:

    1.页面大小。页面划分较大,则缺页率较低。反之,缺页率较高。

    2.进程所分配物理块的数目

    3.页面置换算法
    4.程序固有特性

5.3 页面置换算法

把选择换出页面的算法称为页面置换算法,页面置换算法的好坏将直接影响到系统的性能。

不适当的算法可能会导致进程发生"抖动",即刚被换出的页面很快又要被访问,需要将它重新掉入,此时又需要再选出一页调出,而此刚被调出的页很快又被访问,又需将它重新调入,如此频繁地更换页面,以致一个进程在运行中把大部分时间都花费在页面置换工作上,我们称该进程发生了抖动。

5.3.1 最佳置换算法和先进先出置换算法
  1. 最佳置换算法:其所选择的被淘汰的页面将是以后永不使用的,或许是在最长时间内不再被访问的页面,但由于人们目前还无法预知,一个进程在内存中的若干页面中,哪一个页面是未来最长时间内不再被访问的,因此该算法是无法实现的,但可以利用该算法去评价其他的算法。
  2. 先进先出 (FIFO)页面置换算法:该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。
5.3.2 最近最未久未使用和最近最少使用置换算法
  1. LRU 置换算法。LRU 置换算法的硬件支持: 寄存器和栈
  2. 最少使用(LFU)置换算法。该置换算法选择在最近时期使用最少的页面作为淘汰页,这种算法并不能真正反映出页面的使用情况,因为在每一时间间隔内,只是用寄存器的一位来记录页的使用情况,因此,在该时间间隔内,对某页访问一次和访问1000次是完全等效。
5.3.3 clock置换算法
  1. 简单 clock 置换算法
  2. 改进型的 clock 置换算法。
5.3.4 页面缓冲算法(PBA)
  1. 影响页面换进换出效率的若干因素,其中包括对页面进行置换的算法,将已修改页面写回磁盘的频率,以及将磁盘内容写入内存的频率。
  2. 页面缓冲算法(PBA) 算法的主要特点是,
    1. 显著降低了页面换进换出的频率,使磁盘I/O操作次数大为减少,因而减少了页面换进换出的开销。
    2. 正是由于换入换出的开销大幅减小,才能使其采用一种较为简单的置换策略,如先进先出算法,它不需要特殊硬件支持,实施起来非常简单。
5.3.5 访问内存的有效时间

被访问页分为以下几种情况

  1. 被访问页在内存中,且其对应的页表在快表中
  2. 被访问页表在内存中,且其对应的页表项不在这块表中,显然此时不存在缺页中断情况。但需要两次访问内存,一次读取页表,一次读取数据,另外还需要更新快表。
  3. 被访问页不在内存中。

5.4 抖动与抖动集

如果在系统中运行的程序进程太多,进程在运行中会频繁地发生缺页情况,这又会对系统的性能产生很大的影响。

5.4.1 多道程序度与抖动
  1. 多道程序度与处理机的利用率
  2. 产生抖动的根本原因

发生抖动的根本原因是,同时在系统中运行进程太多,由此分配给每一个进程的物理块太少,不能满足进程正常运行的基本要求,致使每个进程在运行时,频繁地出现缺页,必须请求系统将所缺之页调入内存。这会使得在系统中排队等待的页面调进/调出的进程数目增加。显然,对磁盘的有效访问时间也随之急剧增加,造成每个进程的大部分时间都用于页面的换进/换出,而几乎不能再去做任何有效的工作,从而导致发生处理机的利用率急剧下降,并趋于0的情况,我们称此时的进程处于抖动状态。

5.4.2 工作集
  1. 工作集的基本概念
  2. 工作集的基本定义

所谓工作集,是指在某段时间间隔里,进程实际所要访问页面的集合。

5.4.3 抖动的预防方法

为了保证系统具有较大的吞吐量,必须防止抖动的发生。较常用的预防抖动的方法有:

  1. 采取局部置换策略
  2. 把工作集算法融入到处理机调度中
  3. 利用 L=S 准则调节缺页率
  4. 选择暂停的进程

5.5 请求分段存储管理方式

在分页的基础上建立的请求分页式虚拟存储器系统,是以页面为单位进行换人,换出的。而在分段基础上所建立的请求分段式虚拟存储器系统,则是以分段为单位进行换人,换出的。

5.5.1 请求分段中的硬件支持
  1. 请求分段机制

在请求分段式管理中所需的主要数据结构是请求段表。在表中除了具有请求分页机制中有的访问的字段A,修改位M,存在位P和外存始址四个字段外,还增加了存取方式字段和增补位。

  1. 缺页中断机构

由于分段是信息的逻辑单位,因而不可能出现一条指令被分割在两个分段中,和一组信息被分割在两个分段中的情况。

  1. 地址变换机构
5.5.2 分段的共享与保护
  1. 共享断表
  2. 共享段的分配与回收
  3. 分段保护

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值