返回顶部

主存管理

主存管理概述

存储组织

存储器的功能是保存数据,存储器的发展方向是高速、大容量和小体积。存储组织是指在存储技术和CPU寻址技术许可的范围内组织合理的存储结构。

主存共享方式

  • 大小不等的区域:1.分区存储管理;2.段式存储管理。
  • 大小相等的区域:页式存储管理。
  • 二者结合:段页式存储管理

程序的逻辑组织

  • 一维地址结构:一个程序是一个连续、线性的地址结构;确定线性地址空间中的指令地址或操作数地址只需要一个信息。
  • 二维地址结构:一个程序由若干个分段组成,每个分段是一个连续的地址区;确定线性地址空间中的指令地址或操作数地址需要两个信息,一是该信息所在的分段,另一个是该信息在段内的偏移量。

主存管理的功能

几个概念

  • 物理地址(绝对地址、实地址):物理地址是计算机主存单元的真实地址,又称为绝对地址或实地址。

  • 主存空间:物理地址的集合所对应的空间组成了主存空间。

  • 逻辑地址(相对地址、虚地址):用户的程序地址(指令地址或操作数地址)均为逻辑地址。

  • 程序地址空间:用户程序所有的逻辑地址集合对应的空间。

  • 程序地址空间与主存空间

主存管理功能

实现逻辑地址到物理地址的映射;主存分配;存储保护;主存扩充。

什么是地址映射

将程序地址空间中使用的逻辑地址变换成主存中的物理地址的过程,称为地址映射。

地址映射的时机和类别

  • 编程或编译时确定地址映射关系:在程序编写或程序编译时确定虚、实地址之间的对应关系,结果是一个不能浮动的程序模块。

  • 在程序装入时确定地址映射关系:在程序装入过程中随即进行的地址变换方式称为静态地址映射。

  • 在程序运行时确定地址映射关系:在程序执行期间,随着每条指令和数据的访问自动地连续地进行地址映射,这种地址变换方式称为动态地址映射。

  • 静态地址映射与动态地址映射的区别

    静态地址映射 动态地址映射
    在程序装入过程中进行地址映射 在程序执行期间进行地址映射
    需软件(重定位装入程序) 需硬件地址变换机构(重定位寄存器)
    需花费较多CPU时间 地址变换快
    不灵活 灵活

主存分配

构造分配用的数据结构

主存资源信息块:等待队列;空闲区队列;主存分配程序

制定策略

  • 分配策略——在众多个请求者中选择一个请求者的原则
  • 放置策略——在可用资源中,选择一个空闲区的原则
  • 调入策略——决定信息装入主存的时机;包括预调策略:预先将信息调入主存、请调策略:当需要信息时,将信息调入主存。
  • 淘汰策略——在主存中没有可用的空闲区(对某一程序而言)时,决定那些信息从主存中移走,即确定淘汰已占用的内存区的原则。

实施主存分配和回收

主存扩充

  • 用户编程不受内存容量的限制。
  • 用户编程不需要知道内存寻址等细节。

可行性

程序局部性原理:程序在执行过程中的一个较短时间内,所执行的指令地址或操作数地址分别局限于一定的存储区域中。

实现方法

  • 程序的全部代码和数据存放在辅存中;
  • 将程序当前执行所涉及的那部分程序代码放入主存中;
  • 程序执行时,当所需信息不在主存,由操作系统和硬件相配合来完成主存从辅存中调入信息,程序继续执行。

虚拟存储器

定义:由操作系统和硬件相配合来完成主存和辅存之间的信息的动态调度。这样的计算机系统好像为用户提供了一个其存储容量比实际主存大得多的存储器,这个存储器称为虚拟存储器。

虚拟存储器的核心

  • 逻辑地址与物理地址分开
  • 存储空间与虚地址空间分开
  • 提供地址变换机构

实现虚拟存储器的物质基础

  • 有相当容量的辅存——足以存放应用程序的虚地址空间
  • 地址变换机构

虚拟存储器的概念图

存储保护

什么是存储保护

在多用户环境中,主存储器按区分配给各用户程序使用。为了互不影响,必须由硬件(软件配合)保证各用户程序只能在给定的存储区域内活动,这种措施叫做存储保护。

实现方法——界地址保护

上下界防护

基地址、限长防护

分区存储管理

动态分区分配

什么是动态分区分配

在处理程序的过程中,建立分区,依用户请求的大小分配分区。

动态分区的分配、回收过程

  • 动态分区的分配过程

  • 动态分区的回收过程

分区分配数据结构

  • 主存资源信息块(M_RIB)

    P32

  • 分区描述器(RD)

    flag: 为0——空闲区;为1——已分配区

    size:分区大小

    next:空闲区——自由主存队列中的勾链字;已分配区——此项为零

  • 空闲区队列结构

分区的分配与回收

分区分配思路

  • 寻找空闲块:依申请者所要求的主存区的大小,分区分配程序在自由主存队列中找一个满足用户需要的空闲块。
  • 若找到了所需的空闲区,有两种情况
    • 空闲区与要求的大小相等,将该空闲区分配并从队列中摘除
    • 空闲区大于所要求的的大小,将空闲区分为两部分:一部分成为已分配区,建立已分配区的描述器;剩下部分仍为空闲区。返回所分配区域的首址。
  • 否则,告知不能满足要求

分区回收思路

  • 检查释放分区(即为回收分区)在主存中的邻接情况:若上下邻接空闲区,则合并,称为一个连续的空闲区。
  • 若回收分区不与任何空闲区相邻接:建立一个新的空闲区,并加入到空闲区队列中。

放置策略

什么是放置策略

选择空闲区的策略,称为放置策略。常用的放置策略有:首次匹配(首次适应算法)、最佳匹配(最佳适应算法)、最坏匹配(最坏适应算法)。

首次适应算法

  • 定义:首次适应算法是将输入的程序放置到主存里第一个足够装入它的地址最低的空闲区中。
  • 空闲区队列结构:空闲区地址由低到高排序。
  • 首次适应算法的特点:尽可能利用存储器中低地址的空闲区,而尽量保存高地址的空闲区。

最佳适应算法

  • 定义:最佳适应算法是将输入的程序放置到主存中与它所需大小最接近的空闲区。

  • 空闲区队列结构:空闲区大小由小到大排序。

  • 最佳适应算法的特点:尽可能地利用存储器中小的空闲区,而尽量保存大的空闲区

最坏适应算法

  • 定义:最坏适应算法是将输入的程序放置到主存中与它所需大小差距最大的空闲区。
  • 空闲区队列结构:空闲区大小由大到小排序。
  • 最坏适应算法的特点:尽可能地利用存储器中大的空闲区。

三种放置策略的讨论

程序A要求18KB;程序B要求25KB;程序C要求30KB。用首次适应算法、最佳适应算法、最坏适应算法来处理程序序列,看哪种算法合适。

首次适应算法、最佳适应算法、最坏适应算法的队列结构

碎片问题及拼接技术

什么是碎片问题

在已分配区之间存在着的一些没有被充分利用的空闲区。

什么是拼接技术

所谓拼接技术是指移动存储器中某些已分配区中的信息,使本来分散的空闲区连成一个大的空闲区。

拼接技术的缺点

  • 移动分区花费CPU时间
  • 拼接时,停止了所有工作,影响性能
  • 需要重新定义内存中的作业

页式存储管理

背景:分区存储管理简单,但有碎片问题,内存使用效率低,接收的作业数有限。造成这种问题的主要原因是用户程序装入内存时是整体装入的,一般分配较大的连续内存区,为解决这个问题,提出了分页存储管理技术。

页式系统的基本概念

页面

程序的地址空间被等分成大小相等的片,称为页面,又称为虚页。

主存块

主存被等分成大小相等的片,称为主存块,又称为实页。

页面与主存块的关系

为了方便实现动态地址变换,主存的块和页面大小相等且为2的幂次。

页表

定义:为了实现从地址空间到物理主存的映像,系统建立的记录页与内存块之间对应关系的地址变换的机构称为页面映像表,简称页表。

页表的组成:

  • 高速缓冲存储器:地址变换速度快,但成本较高。
  • 主存区域:地址变换速度比硬件慢,成本较低。

分页映像存储的示例

页式地址变换

页表

程序的虚地址空间划分为若干页,这些连续的页面在主存中可能占用不连续的主存块。为了保证程序能正确运行,必须在执行每条指令时将程序中的逻辑地址变换为实际的物理地址,即进行动态重定位。记录页与块之间对应关系的地址变换的机构称为页面映像表,简称页表。

虚地址结构

当CPU给出的虚地址长度为32位,页面大小为1KB时,在分页系统中地址结构的格式如下:

上图中,机器的地址长度为32位,则每当CPU给出一个虚地址时,这个地址中的高20位表示该地址所在的页号,而低12位表示该地址在这页内的相对位移。分页系统中具有这种特征的地址结构称为分页机构。

页式地址变换

由上图展示的地址变换过程可知,在分页系统环境下,程序员编制的程序,或由编译程序给出的目标程序,经过装配链接后形成一个连续的地址空间,其地址空间的分页由系统自动完成,而地址变换规则通过页表自动、连续地进行,系统的这些功能对用户或程序员来说是透明的。正因为在分页系统中,地址变换过程主要是通过页表来实现的,因此人们称页表为地址变换表或地址映像表。

采用联想存储器加快查表速度

背景:在地址变换过程中,若页表全部由主存实现,那么存取一个数据(或一条指令)至少要访问两次主存:一次是访问页表,确定所要取数据(或指令)的物理地址;第二次才根据物理地址取数(或指令)。也就是说若采用存放在主存的页表进行地址变换,指令执行速度要下降\(100\%\) 。为了提高查表速度,可以采用高速缓冲存储器作为页表。

什么是联想存储器:高速、小容量半导体存储部件,又称缓冲存储器

快表:在缓冲存储器中存放正在运行的进程当前用到的页号和对应的块号,又称为块表。

利用块表进行地址映射:

采用相联存储器的地址转换

假定访问主存时间为\(100\)毫微秒,访问相联存储器时间为\(20\)毫微秒,相联存储器为\(32\)个单元时快表命中率可达\(90\%\),按逻辑地址存取的平均时间为:

\[(100 + 20) \times 90\% + (100 + 100 + 20) \times (1 - 90\%) = 130 \]

两次访问主存的时间为:

\[100 \times 2 = 200 \]

两种页式系统

简单页式系统

将程序的逻辑地址空间和物理内存划分为固定大小的页或页面,程序加载时,分配其所需的所有页,这些页不必连续。

优点

  • 没有外碎片,每个内碎片不超过页大小。
  • 程序不必连续存放
  • 便于改变程序占用空间的大小,即随着程序运行而动态生成的数据增多,地址空间可相应增长。

缺点:程序必须全部装入内存。

请求页式系统

原理

  • 只装入一个作业的部分页面即可投入运行,一个作业事先分配固定数目的主存块。
  • 在程序执行过程中,如果需执行的指令或访问的数据尚未在内存(称为缺页),则由处理器通知操作系统将相应的页或段调入到内存,然后继续执行程序。

需要解决的问题

  • 怎样发现所访问的页面在不在主存
  • 当发现所需访问的页面不在主存时如何处理

扩充页表功能

  • 中断位\(i\):标识该页是否在主存,若\(i = 1\)表示此页不在主存;若\(i = 0\),表示该页在主存。
  • 辅存地址:该页面在辅存的位置

淘汰机制与策略

什么是淘汰策略

用来选择淘汰那一页的规则叫做置换策略,或称淘汰算法。

扩充页表功能

  • 引用位——标识该页最近是否被访问:为0——该页没有被访问;为1——该页已被访问。
  • 改变位——表示该页是否被修改:为0——该页未被修改;为1——该页已被修改。

颠簸

颠簸又称抖动,简单来讲就是导致系统效率急剧下降的主存和辅存之间的频繁页面置换现象。

缺页中断率

假定程序\(p\)共有\(n\)页,系统分配\(m\)块,有\(1\leq m \leq n\);若程序\(p\)在运行中:成功的访问次数为\(s\),不成功的访问次数为\(f\);则缺页中断率为:

\[f' = \frac{f}{s + f}\\ f' = f(r , m , p) \]

\(r\):置换算法,\(m\):系统分配的块数,\(p\):程序特征

常用的置换算法

最佳算法(OPT算法)

当要调入一新页而必须先淘汰一旧页时,所淘汰的那一页应是以后不再要用的,或者是在最长的时间以后才会用到的那页。

先进先出淘汰算法(FIFO算法)

定义:总是选择在主存中居留时间最长(即最早进入主存)的一页淘汰。

实现:建立一个页面进入主存的先后次序表;建立一个替换指针,指向最早进入主存的页面;当需要置换一页时,选择替换指向的那一页,然后调整替换指针的内容。

页号表:页号表记录页面进入主存的先后次序

最久未使用淘汰算法(LRU算法)

定义:总是选择最长时间未被使用的那一页淘汰。

实现:用引用位考察页面的使用情况;当访问页面时,将引用位置1,并计时;当要淘汰一页时,选择时间最长的一页淘汰。要精确实现很困难,硬件方法:采用计数器;软件方法:采用页号栈。

软件方法:采用页号栈示例

缺页处理练习:计算缺页次数

段页式存储管理

段式地址空间

什么是段

分段是程序中自然划分的一组逻辑意义完整的信息集合。分段的例子:代码分段、数据分段、栈段页。

程序地址空间

由若干个逻辑分段组成,每个分段有自己的名字,对于一个分段而言,它是一个连续的地址区。

段式地址结构

段式地址变换

段式地址变换步骤:

  • 取出程序地址(s,w)
  • 用s检索段表
  • 如w<0或w≥L则主存越界
  • (B+w)即为所需主存地址

页式系统与段式系统的区别

用户地址空间的区别

  • 页式系统中用户地址空间:一维空间。
  • 段式系统中用户地址空间:二维空间。
分段和页面的区别
分段 页面
信息的逻辑划分 信息的物理划分
段长是可变的 页的大小是固定的
用户可见 用户不可见
w字段的溢出将产生越界中断 w字段的溢出自动加入到页号中

段页式系统

在段式存储管理中结合分页存储管理技术,在一个分段内划分页面,就形成了段式存储管理。

段页式存储管理的用户地址空间是二维的、按段划分的。在段中再划分成若干大小相等的页。这样地址结构就由段号、段内页号和页内偏移三部分组成。用户使用的仍是段号和段内相对地址,由地址变换机构自动将段内相对地址的高几位解释为段内页号,将剩余的低位解释为页内偏移。用户地址空间的最小单位不是段而是页,而主存按页的大小划分,按页装入,一个段可以装入到若干个不连续的主存块内,段的大小不再受主存可用区的限制。

段页式地址结构的程序地址空间:

段页式系统中段表、页表与主存的关系

posted @ 2022-01-03 12:26  cherish-lgb  阅读(497)  评论(0编辑  收藏  举报