操作系统---------存储器管理

存储器的层次管理

首先我们来看下计算机系统中的存储层次,如下图所示,存储层次至少应具有三级:CPU寄存器、主存、辅存。还可以按照具体的功能细分为寄存器、高速缓存、主存储器、磁盘缓存、固定磁盘、可移动存储介质。在存储层次中,层次越高(越靠近CPU),存储介质的访问速度越快,价格也越高,相对的计算机中配置的容量也越小。
在这里插入图片描述

  1. 主存储器:这也是存储管理管理的主要对象(上图中的主存);
  2. 高速缓存:为了获得更好的处理性能,部分主存程序与数据(特别是关键性能数据)被调入高速缓存,存储管理需要对其进行管理,甚至包含对联想存储器的管理(快表);
  3. 辅存:为了获得更大的虚拟地址空间,存储器管理需要对存放在硬盘、可移动存储介质上的虚拟存储器文件进行管理。

内存分配可大致分为几种:

  1. 分区分配
  2. 伙伴系统
  3. 虚拟存储(分页存储方式,分段存储方式,段页式)

虚拟存储前言:

首先我们得明白虚拟存储的建立前提是什么?应该是因为程序在执行过程中呈现出局部性规律,即在一段连续的时间内,整个程序的执行仅限于程序中的某一部分。相应的,执行所访问的存储空间也仅限于某个内存空间。

局部性原理又表现为: 时间局部性空间局部性

  1. 时间局部性是指如果程序中的某条指令一旦执行,则不久之后该指令可能再次被执行(循环语句);
  2. 空间局部性是指一旦程序访问了某个存储单元,则不久之后,其附近的存储单元也将被访问。

虚拟存储器的特征

  1. 多次性(最基本特征):是虚拟存储器最重要的特征。指一个作业被分成多次调入内存运行。
  2. 对换性 :指允许在作业运行过程中进行换进、换出。换进、换出可提高内存利用率
  3. 虚拟性(最本质特征):指能够从逻辑上扩充内存容量,使用户所看到的内存容量远大于实际内存容量。虚拟性是虚拟存储器所表现出来的重要的特征,也是实现虚拟存储器最重要的目标。

注:虚拟性以多次性和对换性为基础,而多次性和对换性又是离散分配为基础。


(先了解一下分页存储的一下知识点,请点击!

请求分页存储管理方式

(这里主要讲解这个分页存储,分段的相差不大,可自己自行了解)

请求分页中的硬件支持

请求页表机制:

在请求页表中增加了四个字段
在这里插入图片描述

  1. 状态位(存在位) P:指示该页是否已调入内存。
  2. 访问字段A:记录该页在一段时间内的访问次数,或者最近多久未被访问,为置换算法选择置换页提供参考;
  3. 修改位M:指示该页在调入内存后是否被修改过。
  4. 外存地址:指示该页在外存的地址,通常是物理块号。

缺页中断机构:
在请求分页系统中,每当所要访问的页面不在内存时,便产生一缺页中断,请求 OS 将所缺之页调入内存。缺页中断作为中断,它们同样需要经历诸如保护 CPU 环境、分析中断原因、转入缺页中断处理程序进行处理、恢复 CPU 环境等几个步骤。但缺页中断又是一种特殊的中断,它与一般的中断相比,有着明显的区别,主要表现在下面两个方面:

  1. 在指令执行期间产生和处理中断信号。即在指令执行期间,发现所要访问的指令或数据不在内存时所产生和处理的。
  2. 一条指令在执行期间,可能产生多次缺页中断。并保证最后能返回到中断前产生缺页中断的指令处继续执行。

地址变换机构
在这里插入图片描述
(具体在实现的时候,其实就是拿页表来实现的,因为页表记录着页号到块号的转换)

在检索块表和页表时,对于写指令,还须将修改位置成“1”。

请求分页中的内存分配

最小物理块数的确定:

这里所说的最小物理块数,是指能保证进程正常运行所需的最小物理块数。进程应获得的最少物理块数与计算机的硬件结构有关,取决于指令的格式、功能和寻址方式。

内存分配策略:

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

  1. 固定分配局部置换。
    所谓固定分配,是指为每个进程分配一定数目的物理块,在整个运行期间都不再改变。所谓局部置换,是指如果进程在运行中发现缺页,则只能从分配给该进程的 n 个页面中选出一个页换出,然后再调入一页,以保证分配给该进程的内存空间不变。实现这种策略的困难在于:应为每个进程分配多少个物理块难以确定。
  2. 可变分配全局置换。
    所谓可变分配,是指先为系统中的每个进程分配一定数目的物理块,在进程运行期间,可根据情况做适当的增加或减少。所谓全局置换,是指当进程发现缺页时,则将 OS 所保留的空闲物理块(一般组织为一个空闲物理块队列)取出一块分配给该进程,或者以所有物理块为标的,选择一块换出,然后将所缺之页调入。
    在采用这种策略时,凡产生缺页(中断)的进程,都将获得新的物理块,仅当空闲物理队列中的物理块用完时,OS 才能从内存中选择一页调出,而被选择调出的页所属的进程拥有的物理块就会减少,导致其缺页率增加。
  3. 可变分配局部置换。
    该策略为每个进程分配一定数目的物理块,但当某进程发现缺页时,只允许从该进程在内存的页面中选出一页换出,这样就不会影响其它进程的运行。如果进程在运行中频繁地发生缺页中断,则系统须再为该进程分配若干附加的物理块,直至该进程的缺页率减少到适当程度为止;反之,若一个进程在运行过程中的缺页率特别低,则此时可适当减少分配给该进程的物理块数,但不应引起其缺页率的明显增加。

物理块分配算法
在采用固定分配策略时,如何分配物理块采用以下算法:

  1. 平均分配算法。
  2. 按比例分配算法,即根据进程的大小按比例分配物理块的算法。
  3. 考虑优先权的分配算法。通常采取的方法是把内存中可供分配的所有物理块分成两部分:一部分按比例地分配给各进程;另一部分则根据各进程的优先权进行分配。

页面调入策略

何时调入页面:

  1. 预调页策略。一次调入若干个相邻的页。
    ①可用于进程的首次调入时。②在采用工作集的系统中使用。
  2. 请求调页策略。
    进程在运行中提出缺页请求时调入。这种策略每次仅调入一页,故须花费较大的系统开销,增加了磁盘 I/O 的启动频率。

从何处调入页面:

  1. 系统拥有足够的对换区空间,这时可以全部从对换区调入所需页面,以提高调页速度。为此,在进程运行前,便须将与该进程有关的文件从文件区拷贝到对换区。
  2. 系统缺少足够的对换区空间,这时凡是不会被修改的文件都直接从文件区调入;但对于那些可能被修改的部分,在将它们换出时,便须调到对换区,以后需要时,再从对换区调入。
  3. UNIX 方式。凡是未运行过的页面,都应从文件区调入。而对于曾经运行过但又被换出的页面,由于是被放在对换区,因此在下次调入时,应从对换区调入。

通常,由于对换区是采用连续分配方式,而文件区是采用离散分配方式,故对换区的磁盘 I/O 速度比文件区的高。

页面调入过程:

每当程序所要访问的页面未在内存时(存在位为“0”),便向 CPU 发出一缺页中断,中断处理程序首先保留 CPU 环境,分析中断原因后转入缺页中断处理程序。该程序通过查找页表,得到该页在外存的物理块后,如果此时内存能容纳新页,则启动磁盘 I/O 将所缺之页调入内存,然后修改页表。如果内存已满,则须先按照某种置换算法从内存中选出一页准备换出;如果该页未被修改过(修改位为“0”),可不必将该页写回磁盘;但如果此页已被修改(修改位为“1”),则必须将它写回磁盘,然后再把所缺的页调入内存,并修改页表中的相应表项,置其存在位为“1”,并将此页表项写入快表中。在缺页调入内存后,利用修改后的页表,去形成所要访问数据的物理地址,再去访问内存数据。整个页面的调入过程对用户是透明的。

缺页率:

如果在进程的运行过程中,访问页面成功(即所访问页面在内存中)的次数为S,访问页面失败(即所访问页面不在内存中,需要从外存调入)的次数为F,则该进程总的页面访问次数为A = S + F,那么该进程在其运行过程中的缺页率即为
在这里插入图片描述

缺页率受以下因素的影响:

  1. 页面大小。
  2. 进程所分配物理块的数目。
  3. 页面置换算法。因此缺页率是衡量页面置换算法的重要指标。
  4. 程序固有特性。

事实上,在缺页处理时,选择被置换页面还需要考虑置换的代价,如页面是否被修改过。


页面置换算法


抖动

抖动:在虚存中,页面在内存与外存之间频繁调度,以至于调度页面所需时间比进程实际运行的时间还多。此时系统效率急剧下降,甚至导致系统崩溃。这种现象称为颠簸或抖动。

产生抖动的原因:

  1. 页面淘汰算法不合理
  2. 分配给进程的物理页面数太少

猜你喜欢

转载自blog.csdn.net/weixin_43743711/article/details/115008967