操作系统11:虚拟存储器

目录

1、虚拟存储器概述

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

1.1 - 常规存储器管理方式的特征

1.2 - 局部性原理

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

(2)虚拟存储器的定义和特征

2.1 - 虚拟存储器的定义

2.2 - 虚拟存储器的特征

2.3 - 虚拟存储器的实现方法

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

(1)请求分页中的硬件支持

1.1 - 请求页表机制

1.2 - 缺页中断机构

1.3 - 地址变换机构

(2)请求分页中的内存分配

2.1 - 最小物理块数的确定

2.2 - 内存分配策略

2.3 - 物理块分配算法

(3)页面调入策略

3.1 - 系统应在何时调入所需页面?

3.2 - 系统应从何处调入这些页面?

3.3 - 页面调入过程

3.4 - 缺页率

(4)页面置换算法

4.1 - 最佳 (Optimal) 置换算法

4.2 - 先进先出 (FIFO) 页面置换算法

4.3 - 最近最久未使用 (Least Recently Used,LRU) 置换算法

4.4 - 最少使用 (Least Frequently Used,LFU) 置换算法

4.5 - 简单的 Clock 置换算法

4.6 - 改进型 Clock 置换算法

(5)页面缓冲算法 (Page Buffering Algorithm,PBA)

5.1 - 影响页面换进换出效率的若干因素

5.2 - 页面缓冲算法 PBA

3、抖动与工作集

(1)多道程序度与“抖动”

1.1 - 多道程序度与处理机的利用率

1.2 - 产生“抖动”的原因

(2)工作集

2.1 - 工作集的基本概念

2.2 - 工作集的定义

(3)“抖动”的预防

3.1 - 局部置换策略

3.2 - 把工作集算法融入到处理机调度中

3.3 - 利用“L=S”准则调节缺页率

3.4 - 选择暂停的进程

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

(1)请求分段中的硬件支持——请求段表机制

(2)分段的享与保护

2.1 - 共享段表

2.2 - 共享段的分配与回收

2.3 - 分段保护


1、虚拟存储器概述

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

1.1 - 常规存储器管理方式的特征

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

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

        由此可以看出,上述的一次性及驻留性特征使得许多在程序运行中不用或暂时不用的程序占据了大量的内存空间,而一些需要运行的作业又无法装入运行,显然,这是在浪费宝贵的内存资源。

1.2 - 局部性原理

        程序在执行时将呈现出局部性规律,即在一较短的时间内,程序的执行仅局限于某个部分,相应地,它所访问的存储空间也局限于某个区域。

        原因:首先,程序在大多数情况下是顺序执行的,而且过程调用的深度一般都不超过 5,其次程序中存在许多循环结构,对许多数据结构的处理也都局限于很小的范围内。//补充:过程调用会转移程序的执行区域,程序循环和数据结构往往都只是一个很小的范围

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

  • 时间局限性。如果程序中的某条指令被执行,则不久以后该指令可能再次执行;如果某数据被访问过,则不久以后该数据可能再次被访问。产生时间局限性的典型原因是在程序中存在着大量的循环操作
  • 空间局限性。一旦程序访问了某个存储单元,在不久之后,其附近的存储单元也将被访问,即程序在一段时间内所访问的地址可能集中在一定的范围之内,其典型情况便是程序的顺序执行
1.3 - 虚拟存储器的基本工作情况

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

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

        这样,便可使一个大的用户程序在较小的内存空间中运行,也可在内存中同时装入更多的进程,使它们并发执行。

(2)虚拟存储器的定义和特征

2.1 - 虚拟存储器的定义

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

2.2 - 虚拟存储器的特征

        与传统的存储器管理方式比较,虚拟存储器具有以下三个重要特征:

  • 程序允许被分成多次调入内存运行。(多次性)
  • 允许一个作业中的程序和数据,在作业的运行过程中进行换入和换出。(对换性)
  • 用户所看到的内存容量远大于实际内存容量。(虚拟性)

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

2.3 - 虚拟存储器的实现方法

        (1)分页请求系统

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

        置换时以页面为单位。为了能实现请求调页和页面置换功能,系统必须提供必要的硬件支持和实现请求分页的软件。

  • 硬件支持:请求分页的页表机制、缺页中断机构、地址变换机构。
  • 软件支持:用于实现请求调页的软件和实现页面置换的软件。它们在硬件的支持下,将程序正在运行时所需的页面调入内存,再将内存中暂时不用的页面从内存置换到磁盘上。// 也就是算法

        (2)请求分段系统

        请求分段系统是在分段系统的基础上,增加了请求调段分段置换功能后所形成的段式虚拟存储系统。

  • 硬件支持:请求分段的段表机制、缺段中断机构、地址变换机构。
  • 软件支持:用于实现请求调段的软件和实现段置换的软件。

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

(1)请求分页中的硬件支持

        为了实现请求分页,系统必须提供一定的硬件支持。计算机系统除了要求一定容量的内存和外存外,还需要有请求页表机制、缺页中断机构以及地址变换机构。

1.1 - 请求页表机制

        在请求分页系统中需要的主要数据结构是请求页表,其基本作用仍然是将用户地址空间中的逻辑地址映射为内存空间中的物理地址。为了满足页面换进换出的需要,在请求页表中又增加了四个字段。这样,在请求分页系统中的每个页表应含以下诸项:

        现对其中各字段说明如下:

  • 状态位(存在位) P:由于在请求分页系统中,只将应用程序的一部分调入内存,还有一部分仍在外存磁盘上,故须在页表中增加一个存在位字段。由于该字段仅有一位,故又称位字。它用于指示该页是否已调入内存,供程序访问时参考。
  • 访问字段 A:用于记录本页在一段时间内被访问的次数,或记录本页最近已有多长时间未被访问,提供给置换算法在选择换出页面时参考。
  • 修改位 M:标识该页在调入内存后是否被修改过。由于内存中的每一页都在外存上保留一份副本,因此,在置换该页时,若未被修改,就不需再将该页写回到外存上,以减少系统的开销和启动磁盘的次数;若已被修改,则必须将该页重写到外存上,以保证外存中所保留的副本始终是最新的。简而言之,M 位供置换页面时参考。
  • 外存地址:用于指出该页在外存上的地址,通常是物理块号,供调入该页时参考。// 这项跟第二项物理块号有重复,暂这样
1.2 - 缺页中断机构

        缺页中断作为中断,它们同样需要经历诸如保护CPU环境、分析中断原因、转入缺页中断处理程序进行处理,以及在中断处理完成后再恢复 CPU 环境等几个步骤。// 在此,不做过多描述,仅知道是一种中断硬件即可

1.3 - 地址变换机构

        请求分页系统中的地址变换机构是在分页系统地址变换机构的基础上,为实现虚拟存储器,再增加了某些功能所形成的,如产生和处理缺页中断,以及从内存中换出一页的功能等等。// 在此,也不做过多描述

(2)请求分页中的内存分配

        在为进程分配内存时,将涉及到三个问题:

  • 第一,为保证进程能正常运行,所需要的最小物理块数的确定。//分配数量
  • 第二,在为每个进程分配物理块时,应采取什么样的分配策略,即所分配的物理块是固定的,还是可变的。//分配方式
  • 第三,为不同进程所分配的物理块数,是采取平均分配算法,还是根据进程的大小按比例分配。//分配公平性
2.1 - 最小物理块数的确定

        随着为每个进程所分配的物理块的减少,将使进程在执行中的缺页率上升,从而会降低进程的执行速度。所以为使进程能有效地工作,应为它分配合理数目的物理块。

        最小物理块数是指能保证进程正常运行所需的最小物理块数当系统为进程分配的物理块数少于此值时,进程将无法运行。至于进程应获得的最少物理块数,与计算机的硬件结构有关,取决于指令的格式、功能和寻址方式。// 跟具体计算机有关,不做深入描述

2.2 - 内存分配策略

        在请求分页系统中,可采取两种内存分配策略,即固定和可变分配策略。在进行置换时,也可采取两种策略,即全局置换和局部置换。于是可组合出以下三种适用的策略:

        (1)固定分配局部置换(Fixed Allocation,LocalReplacement)

        所谓固定分配,是指为每个进程分配一组固定数目的物理块,在进程运行期间不再改变。所谓局部置换,是指如果进程在运行中发现缺页,则只能从分配给该进程的 n 个页面中选出一页换出,然后再调入一页,以保证分配给该进程的内存空间不变。

        实现这种策略的困难在于:应为每个进程分配多少个物理块难以确定。若太少,会频繁地出现缺页中断,降低了系统的吞吐量。若太多,又必然使内存中驻留的进程数目减少,进而可能造成 CPU 空闲或其它资源空闲的情况,而且在实现进程对换时,会花费更多的时间。//难以实现,或者实现后性能不稳定

        (2)可变分配全局置换(VariableAllocation,GlobalReplacement)

        所谓可变分配,是指先为每个进程分配一定数目的物理块,在进程运行期间,可根据情况做适当的增加或减少。所谓全局置换,是指如果进程在运行中发现缺页,则将 OS 所保留的空闲物理块取出一块分配给该进程,或者以所有进程的全部物理块为标的,选择一块换出,然后将所缺之页调入。这样,分配给该进程的内存空间就随之增加。

        可变分配全局置换是最易于实现的一种物理块分配和置换策略,已用于若干个 OS 中。在采用这种策略时,凡产生缺页的进程,都将获得新的物理块,仅当空闲物理块队列中的物理块用完时,OS 才能从内存中选择一页调出。被选择调出的页可能是系统中任何一个进程中的页,因此这个被选中的进程拥有的物理块会减少,这将导致其缺页率增加。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

swadian2008

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值