第4章 存储管理

  • 学习重点和难点:
    1 存储管理的基本概念
    2 各种存储管理的基本思想、实现方法和技术
    3 地址空间和物理空间的区别
    4 虚拟存储器的概念和方法
    5 请求分页
    在这里插入图片描述
    在这里插入图片描述

4.1 存储器管理概述

一、程序的装入和链接

(一)程序的装入

1、绝对装入方式(Absolute Loading Mode)
    程序中所使用的相对地址可以在编译或汇编时给出或由程序员直接赋予(单道程序系统)
2、可重定位装入方式(Relocation Loading Mode)
    当一个地址装入与其地址空间不一致的存储空间中,就得要地址变换。也就是说将虚地址映射为内存地址,把这种作法叫做地址重定位
3、动态运行时的装入方式(Denamle Run-time Loading)
    地址转换推迟到程序真正要开始执行时才进行。

(二)程序的链接

1、静态链接:运行前
    程序运行之前,先将各目标模块及它们所需的库函数,链接成一个完整的装配模块,以后不再拆开。
2、装入时动态链接:编译后装入内存时
    将用户源程序编译后所得到的一组目标模块,在装入内存时,采用边装入边链接的方式。
3、运行时的动态链接:执行时
    对某些目标模块的链接时在程序执行中需要该模块是才对它进行链接

二、存储管理的目的和功能

1、目的
尽可能地方便用户和提高主存储器的使用效率,使主存储器在成本、速度和规模之间获得较好的权衡。

2、功能
主存空间分配和保护
主存空间的重定位
主存空间的共享
主存空间的扩充

三、地址变换

1、地址空间:一个目标程序所限定的地址范围
逻辑地址与物理地址的区别
逻辑地址(相对地址):(编程用的)程序用来访问信息所用的地址。是虚的概念
物理地址(绝对地址):(内存条的地址)主存中一系列存储物理单元。是实的物体
地址空间是逻辑地址的集合。存储空间是物理地址的集合。
2、地址重定位方式:静态重定位和动态重定位
(1)静态重定位:运行前将程序或作业中的指令和数据的逻辑地址一次性全部转换成物理地址。
(2)动态重定位:在程序执行过程中需要访问数据时再进行地址变换。

四、存储管理方式

在这里插入图片描述
重点掌握离散分配

4.2 单一连续分配管理

    内存的用户区中仅驻留一道程序,整个用户区被一个用户独占。
1、利用率低,适用于单用户单功能操作系统,不适用于多用户系统和单用户多任务系统。
2、特点:管理简单、内存利用率低、CPU利用率低、缺乏灵活性

4.3 分区存储管理

适应多道程序设计

一、固定分区存储管理

各分区大小可以不同,但预先固定
    系统预先把内存中的用户划分成若干个固定大小的连续区域,每个区域成为一个分区。每个分区可以装入一道程序或作业,每道程序只能装入一个分区。
1、划分方式:
(1)分区大小相等:程序太小,内存浪费;程序太大,无法装入内存,不能运行;
(2)分区大小不等:把内存划分成含有多个较小的分区,适量的中等分区和少量大分区,可根据程序大小为它分配适当内存。有部分浪费。
2、固定分区存储管理的地址转换
在这里插入图片描述
下限寄存器:用于存放分区的起始地址(低地址);
上限寄存器:用于存放分区的末地址(高地址);

二、可变分区存储管理

1、基本原理
不预先划分,而是装入内存时动态划分
    系统不预先划分固定区域,而是程序或作业装入内存时,根据程序或作业的实际需要动态地划分内存空间。
2、分区表
空闲分区链:通过指针,将所有空闲分区连成一个链表;
分区表:
在这里插入图片描述
3、可变分区分配算法
(1)首次适应算法/最先适应算法(First Fit,FF)
将空闲分区按照首地址递增的顺序排列
优点:优先使用低地址部分空闲分区,保留了高地址部分的大量空闲分区,有利于大程序或作业的装入。
缺点:内存的低地址区留下内存“碎片”;算法每次都从低地址部分开始查找,这增加了查找可用空闲分区的开销。
(2)循环首次适应算法(Next Fit,NF)
将空闲分区按照首地址递增的顺序排列每次内存分配时,不再从表头(或链首)开始查找,而是从上次分配的空闲分区的下一个空闲分区开始顺序查找。
优点:内存的空闲分区分布较均匀,减少查找空闲分区的开销。
缺点:经多次分配后,内存缺少较大的空闲分区,以分配给较大的程序或作业。

(3)最佳/优适应算法(Best Fit,BF) 最易产生碎片
将空闲分区按从小到大的顺序排列
优点:较大的空闲分区被尽量的保留下来,有利于大程序或作业的分配。
缺点:容易产生内存碎片;每次分配后需要更新空闲分区表(链),增加了系统开销;分割后小的空闲分区处于分区表(链)首,增加了查找空闲分区的时间。

(4)最坏适应算法(Worst Fit,WF) 最不易产生碎片
将空闲分区按从大到小的顺序排列
优点:不会产生过多的碎片,有利于中、小程序或作业,且查找效率高。
缺点:影响大程序或作业的分配。此外,每次分配后需要更新空闲分区表(链),增加了系统开销。

  • 几种算法的比较
    1.在搜索速度和回收过程方面,FF具有最佳性能
    2.空间利用方面,首次适应算法比最佳适应算法好,最坏适应算法最差 FF>BF>WF
    3.最佳适应算法找到的空闲分区是最佳的,但内存利用率不一定最优
    4.首次适应算法尽可能利用低地址空间,保证了高地址有较大空闲分区,以分配给较大的程序或作
    5.最坏适应算法总是分割大的空闲分区,这有利于中、小程序或作业,但不利于较大的程序或作业。
    6.在实际系统中,首次适应算法使用较广泛

    外碎片:未分配是指由于空闲空间太小,以致于无法分配给程序或作业的内存空闲区域,如动态分区分配中存在外碎片;
    内碎片:已分配但未用上是指已经被分配出去,却不能被充分利用的内存空间区域,如固定分区分配中存在内碎片。

4、可变分区的回收 P97-P98
    作业运行结束后,系统需回收它所占用的内存空间,并将其登记在空闲分区表(链)中。
在这里插入图片描述
(a)上邻空闲分区
(b)下邻空闲分区
©上、下邻空闲分区
(d)上、下邻占用区

5、地址转换和存储保护
    可变分区存储管理采用动态重定位方式装入程序或作业。
在这里插入图片描述
基址寄存器:存放程序或作业所占内存分区的起始地址
限长寄存器:存放程序或作业所占内存分区的末地址

三、可重定位分区存储管理

  • 静态重定位、动态重定位区别
    静态重定位:运行前将程序或作业中的指令和数据的逻辑地址一次性全部转换成物理地址。
    动态重定位:在程序执行过程中需要访问数据时再进行地址变换。
  • 与可变式分区算法的差别:可重定位~需要将空闲区进行拼接,以减少碎片,提高存储器的利用率。(增加了紧凑功能)

4.4 覆盖和交换 P100

覆盖与交换是解决大程序或作业与小内存之间矛盾的两种存储管理技术,它们实质上是从逻辑上对内存进行扩充。

一、覆盖

1、概念:同一内存区域可以被不同的程序段重复使用。
2、主要特点:打破了必须将一个作业的全部信息装入主存后才能运行的限制。
3、在一定程度上解决了小主存运行大作业的矛盾。
4、目前只用在操作系统的内存管理上

在这里插入图片描述

二、交换

1、概念:将内存中暂时不能运行的进程或暂时不使用的程序或数据换出到外存,以腾出足够的内存空间,把已具备运行条件的进程或进程所需要的程序或数据换入到内存。
2、主要特点:打破了一道程序一旦进入内存便一直运行到结束的限制。
3、两种方式:整体交换(进程交换)、部分交换(页面交换、分段交换)
4、对进程、用户透明
5、利用外存来逻辑上扩充内存

三、异同

同:都实现了大作业在小内存上运行,从逻辑上扩充内存的容量。
异:
1.覆盖发生在同一进程(或程序)之内,而交换发生在进程(或程序)之间;
2.覆盖只能在一个程序内部进行,而交换技术可以在任意程序间进行;
3.覆盖要求给出程序的覆盖结构,要求用户提出,对用户不透明,而交换技术对程序结构没有限制。

在这里插入图片描述
用户程序中指令或数据的逻辑地址是分页系统自动划分的

4.5 分页存储管理

一、逻辑地址结构
在这里插入图片描述

二、地址转换
一维,比较一次,访问两次(页表、内存),不产生外部碎片
1.解决碎片问题(但仍存在碎片,只是利用率提高)
2.可以不连续
3.速度下降
在这里插入图片描述

PS:等于的情况也会产生越界中断

三、改进
1.快表:把存放在高速缓冲寄存器中的页表叫快表
基于局部性原理
(1)可连续
(2)解决碎片问题
(3)速度下降不大
在这里插入图片描述
两边同时开始,快表有则截取并停止页表的查找;若无,在页表中查找并保存到快表中。

2.两级页表
(1)逻辑地址结构
在这里插入图片描述

(2)地址变换
在这里插入图片描述
(3)避免连续页号,速度变慢,需要额外内存开销

4.6 分段存储管理

分页~未考虑用户程序逻辑结构,不利于共享和保护
一、逻辑地址结构
在这里插入图片描述

二、地址转换
二维,比较两次,访问两次,不产生内部碎片
段的内部是连续存放的,段与段之间是离散存放的(段号从0开始,但顺序不定)
在这里插入图片描述

  • 分页和分段的区别
    1.同:(1)离散分配存储方式(2)都需要地址转换机制实现地址变换(3)访问两次内存
    2.异:(1)页是信息的物理单位,分页仅是系统管理内存的方便而进行的,不是用户的需要;段是信息的逻辑单位,分段是出于用户的需要;
    (2)页的大小固定的,具体由系统决定;段的大小不固定,由用户程序本身决定;
    (3)分页的逻辑地址空间是一维的连续空间;分段的逻辑地址空间是二维的,段之间的逻辑地址是不连续的。

4.7 段页式存储管理

一、逻辑地址结构
机器硬件将段内地址进一步划分为页号和页内地址
在这里插入图片描述

二、地址转换
二维,比较两次,访问三次,不产生外部碎片
在这里插入图片描述

分页一维比较一次,访问两次产生内部碎片,不产生外部碎片
分段二维比较两次,访问两次不产生内部碎片,产生外部碎片
段页式二维比较两次,访问三次产生内部碎片,不产生外部碎片

4.8 虚拟存储管理

一、基本原理

1、局部性原理
    指程序的执行呈现局部性规律,即在一较短时间内,程序的执行仅局限于某个部分,相应地,它所访问的存储空间也仅局限于某个区域。
    表现:时间,空间
(1)时间的局部性:如果程序中的某条指令或数据被访问后,那么它可能很快会再次被访问。产生时间局部性的典型原因是程序中存在循环操作;
(2)空间的局部性:如果某个存储单元被访问,那么其附近的存储单元很快也会被访问。其典型情况是程序的顺序执行。
2、虚拟存储器
(1)利用虚拟存储技术实现请求调入功能和置换功能,从逻辑上对内存容量进行扩充的一种存储器。
(2)最大容量受限于系统中的地址长度、外存容量。

3、虚拟存储器的特征
(1)离散性:离散分配,是虚拟存储器基础
(2)多次性:一道程序或作业被多次调入内存运行(无需全部装入),是虚拟存储器最重要特征(别的存储管理方式都无)
(3)对换性:允许换进换出,提高内存利用率
(4)虚拟性:从逻辑上扩充内存的容量
4、常用的虚拟存储器实现方案
请求分页管理方式/分段/段页式

二、请求分页存储管理

分页存储管理+请求调页、页面置换功能
1、请求页表
在这里插入图片描述

2、缺页中断机构
    每当所要访问的页面不在内存时,便产生缺页中断。
    缺页中断与一般中断区别:产生中断时间、次数不同
(1)缺页中断:执行过程中,多次
(2)一般中断:执行完一条指令后,一次
3、页面置换算法

1.页面置换:指当内存空间已装满而又要装入新的页面时,需将内存中的某个或某些页面置换到外存,以腾出空间给新的页面。
2.抖动(又称颠簸):指刚被淘汰的页面又立即需要访问,因而又要将其调入内存,调入后不久再被淘汰,淘汰后不久又再被调入,如此反复,使得整个系统的页面调度非常频繁,以至于大部分时间都花费在页面的来回调度上。

(1)先进先出置换算法FIFO
Belady现象:某些情况下,物理块增多,缺页中断次数增加,如123412512345
(2)最佳置换算法OPT
指从内存中淘汰以后再也不需要访问的页面、或者淘汰在最长时间内不再被访问的页面。
(3)最近最久未使用置换算法LRU
依据程序局部性原理
硬件较多,成本较多;现实中常用寄存器或栈实现
(4)时钟置换算法CLOCK=最近未使用NUR
从最近一段时期内未被访问的页面中任意选择一个页面予以淘汰
算法易实现+无需昂贵硬件支持,但随机性较强+未考虑页面内容是否已修改->系统开销较高

1.OPT>LRU>最近未使用NUR>FIFO
2.注意题中是分成几块!!!
3.做题:在这里插入图片描述

三、请求分段存储管理

分段存储管理+请求调段功能、段的置换功能
1、请求段表
在这里插入图片描述
2、地址变换

总结

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值