第四章 存储器管理

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

存储器是计算机系统的重要组成部分。
近年来,存储器容量虽然一直在不断扩大,但仍不能满足现代软件发展的需要,因此,存储器仍然是一种宝贵而又紧俏的资源。
如何对它加以有效的管理,不仅直接影响到存储器的利用率,而且还对系统性能有重大影响。存储器管理的主要对象是内存。

一、存储器的层次结构

多层结构的存储器系统

1. 存储器的多层结构
在这里插入图片描述

  • 在存储层次中,越往上存储介质的访问速度越快,价格也越高,相对存储容量也越小。
  • 寄存器、
    高速缓存、主存储器和磁盘缓存均属于操作系统存储管理的管辖范畴,掉电后它们存储的信息不再存在。
  • 固定磁盘和可移动存储介质属于设备管理和文件管理的管辖范畴,它们存储的信息将长期保存。

2. 可执行存储器

  • 寄存器和主存储器又被称为可执行存储器。
  • 对于存放于其中的信息,与存放于辅存中的信息相比较而言,计算机所采用的访问机制是不同的,所需耗费的时间也是不同的。
  • 对于不同层次的存储质,由OS同一管理

主存储器与寄存器

1.主存储器

  • 主存储器(简称主存或内存) ,用于保存进程运行时的程序和数据,也称可执行存储器。
  • CPU 的控制部件只能从主存储器中取得指令和数据,或者从寄存器存入到主存储器。
  • CPU与外围设备交换的信息一般也依托于主存 储器地址空间。
  • 由于主存储器的访问速度远低于CPU执行指令的速度,为缓和这一矛盾, 在计算机系统中引入了寄存器和高速缓存。
    2.寄存器
  • 寄存器访问速度最快,完全能与CPU协调工作,但价格却昂贵,因此个数不能很多、容量不能做的很大。
  • 寄存器的字长一般以字节(byte)、字(word)、双字和4字为单位。容量由8位~64位之分。
  • 寄存器的数目,对于当前的微机系统和大中型机,可能有几十个甚至上百个。而嵌入式计算机系统一般仅有几个到几十个。
  • 寄存器用于加速存储器的访问速度,如用寄存器存放操作数,或用作地址寄存器加快地址转换速度等。

高速缓存和磁盘缓存

  • 为了解决主存储器的访问速度远低于CPU和寄存器速度的问题,引入了高速缓存。
  • 同样为了解决外存的访问速度低于主存问题,又引入了磁盘缓存。
    1.高速缓存
  • 高速缓存是现代计算机结构中的一个重要部件(一般位于CPU内部,可能分L1、L2或L3级)。速度介于寄存器与主存之间,容量远大于寄存器,从几十K到几MB,访问速度快于主存储器。
  • 根据局部性原理,将主存中一些经常访问的信息存放在高速缓存中,可减少访问主存储器的次数,提高程序执行速度。
  • 当CPU访问一组特定信息时,首先检查它是否在高速缓存中,如果己存在则直接使用,否则,再从主存中读出信息,并放入缓存。
  • 由于高速缓存的速度越高价格也越贵,故有的计算机系统中设置了两级或多级高速缓存。
    2.磁盘缓存
  • 磁盘缓存并不是一种实际存在的存储器,而是利用主存中的部分存储空间暂时存放从磁盘中读出(或待写入)的信息。
  • 主存也可以看做是辅存的高速缓存,因为,辅存中的数据必须复制到主存方能使用;反之,数据也必须先存在主存中,才能输出到辅存。
  • 由于磁盘的I/O速度远低于对主存的访问速度,引入缓存之后,可减少访问磁盘的次数。
  • 一个文件的数据可能出现在存储器层次的不同级别中。

二、程序的装入和链接

在这里插入图片描述

三、连续分配存储管理方式

  • 连续分配方式,是指为一个用户程序分配一个连续的内存空间。也叫区式分配或分区式分配。
  • 这种分配方式曾被广泛应用于20世纪60~70年代的OS中,它至今仍在内存分配方式中占有一席之地。
  • 可把连续分配方式进一步分为:
    单一连续分配
    固定分区分配
    动态分区分配
    可重定位分区分配

四、 对换(Swapping)

  • 所谓“对换”,是指当内存不足,且有进程要进入时,把内存中暂时不能运行的进程或暂时不用的程序和数据,调出到外存上,以便腾出足够的内存空间,然后再把要进入的程序和数据,调入内存。
  • 对换是提高内存利用率和动态扩充内存的有效措施。这是典型的以时间换空间措施。
  • 对换所使用的设备和存储是交换区。交换区可以是文件,也可以是交换设备(比如磁盘分区)。
  • 对换有整体对换和部分对换。

五、分页存储管理方式

  • 连续分配方式会形成许多“碎片”,虽然可通过“紧凑”方法将许多碎片拼接成可用的大块空间,但须为之付出很大开销。
  • 如果允许将一个进程直接分散地装入到许多不相邻接的分区中,则无须再进行“紧凑”,会节约大量系统开销。离散分配方式有:
    分页存储管理方式;
    分段存储管理方式;
    段页式存储管理方式。

分页存储管理的基本方法

  • 在分页存储管理方式中,如果不具备页面对换/置换功能,则称为基本的分页存储管理方式,或称为纯分页存储管理方式。
  • 它不具有支持实现虚拟存储器的功能,它要求把每个作业全部装入内存后方能运行。
    页面大小
  • 在分页系统中的页面大小应适中。不能太大,也不能太小。
    若页面太小,一方面虽然可减少页内碎片,提高内存利用率;但另一方面也会使每个进程占用较多的页面,从而导致进程的页表过长,占用大量内存; 此外,还会降低页面换进换出的效率。
    若页面较大,虽然可以减少页表的长度,提高页面换进换出的速度,但却又会使页内碎片增大。
  • 页面大小应是磁盘扇区512的整倍数,通常为512 B~8 KB。
  • 页的大小与计算机体系结构有关,大小不能改变。
  • Intel体系结构的32位系统页面大小为4K.
    页表
  • 在分页系统中,允许将进程的各页离散地存储在内存的不连续页帧中,但系统必须能在内存中找到每个页面所对应的页帧。
  • 为此,系统要为每个进程建立了一张页面映像表(简称页表),用来表示进程的逻辑页面与物理页帧的对应关系,将逻辑页面映射为物理页帧。
    在这里插入图片描述
    地址变换机构
  • 为了能将用户进程地址空间中的逻辑地址,变换为内存空间中的物理地址,在系统中必须设置地址变换硬件机构。
  • 该机构的基本任务是实现从逻辑地址到物理地址的转换。
  • 由于逻辑页面与物理页帧大小相等,页内地址不需转换,因此,地址变换机构的任务,实际上只是将逻辑页号,转换为物理页/框/帧号。
  • 地址变换任务是地址变换机构借助于页表来完成的。
    1. 基本的地址变换机构
  • 页表大多驻留在内存中。
  • 在系统中只设置一个页表寄存器PTR(Page-Table Register),在其中存放进程页表在内存的始址和页表的长度。
  • 进程页表的始址和页表长度存放在本进程的PCB中。当调度某进程时,才将这两个数据装入页表寄存器中。
  • 因为在单处理机环境下,虽然系统中可以运行多个进程,但只需一个页表寄存器。
    2.具有快表的地址变换机构
  • 由于页表是存放在内存中的,使得CPU在每存取一个数据时,都要两次访问内存。
    第一次是访问内存中的页表,得到页帧;
    第二次访问物理内存中的数据。
  • 这得使处理速度降低近1/2,必须采取一定措施。
  • 为此,可在地址变换机构中,增设一个具有并行查寻能力的高速缓冲寄存器,又称为“联想寄存器”(Asociative
    Memory)或称为“快表”,用于存放当前正在访问或经常使用的页表以加速对页表查找。
  • 查找时先查快表,若快表中没有,再查找页表并将其添加到快表中。实践证明:在快表中查到所需数据的机率在90%以上。

两级和多级页表

  • 现代的大多数计算机系统,都支持非常大的逻辑地址空间(2的32次方~2的64次方)。在此环境下,页表就变得非常大,要占用相当大的内存空间。
  • 对于一页面大小为4KB(212B)具有32位逻辑地址空间的分页系统,则在每个进程页表中的页表项可达1M(220)个之多,故每进程仅其页表就要占用1M个字长的内存空间,且要求是连续的。
  • 问题解决:
    ①页表采用离散分配方式;
    ②交换方式:只将当前需要的部分页表项放入内存,其余的驻留在交换区上,需要时再调入。
    具有两级页表的地址变换机构
  • 为了地址变换实现上的方便起见,需要增设一个外层页表寄存器,用于存放外层页表的始址。
  • 利用逻辑地址中的外层页号p1作为外层页表的索引,从中找到指定页表分页的始址p2。再利用p2作为指定页表分页的索引,找到指定的页表项,其中含有该页在内存的物理块号。
  • 用该块号和页内地址d即可构成访问的内存物理地址。
    在这里插入图片描述

在这里插入图片描述

  • 对页表施行离散分配的方法,虽然解决了对大页表无需大片存储空间的问题,但并未解决用较少的内存空间去存放大页表的问题。或者说未减少页表所占用的内存空间。
  • 解决方法是把当前需要的一批页表项调入内存,以后再根据需要陆续调入其它的。
  • 在采用两级页表结构的情况下,对于正在运行的进程,必须将其外层页表调入内存,而对页表则只需调入部分页。
  • 为了表示某页的页表是否已经调入内存,还 应在外层页表项中增设一个状态位S。

六、 分段存和段页式储管理方式

  • 存储器管理从固定分区发展到动态分区分配,进而又发展到分页存储管理方式提高内存利用率。
  • 但是在分页结构中的分页内的内容不具有完整的物理或逻辑意义。这使得程序和数据的共享非常困难。更难实现程序执行的动态链接。
  • 段式管理方式可以解决以上不足。

分段管理方式的引入

引入分段存储管理方式, 主要是为了满足用户和程序员的下列需要:
1) 方便编程
2) 信息共享
3) 信息保护
4) 动态增长
5) 动态链接

地址变换机构示意图

在这里插入图片描述

信息共享

  • 分段系统的一个突出优点,是易于实现段的共享,即允许若干个进程共享一个或多个分段。
  • 在分段系统中,段共享时,只需在每个进程的段表中将逻辑段指向相同的物理段即可。
  • 对段的保护也十分简单易行。
    分页系统中对程序和数据的共享
    在这里插入图片描述
    分段系统中程序和数据的共享
    在这里插入图片描述

总结

分页和分段的主要区别
(1)页是信息的物理单位。分页的目的是为了实现离散分配方式,以消减内存的外零头,提高内存的利用率。或者说,仅仅是系统管理的需要而不是用户的需要。段则是信息的逻辑单位,它含有一组意义相对完整的信息。分段的目的是为了能更好地满足用户的需要。
(2)页的大小固定且由硬件系统决定。而段的长度是不固定的,决定于用户所编写的程序,通常在编译程序对源程序进行编译时,根据信息的性质来决定。
(3)分页时地址空间是一维的,而分段时地址空间则是二维的。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值