模拟分页式存储管理中硬件的地址转换和产生缺页中断_计算机存储管理的功能以及管理方案...

存储器管理的对象是主存储器(主存、内存)。存储器是计算机系统中的关键性资源,是存放各种信息的主要场所。如何对存储器实施有效的管理,不仅直接影响到存储器的利用率,而且还对系统性能有重大的影响。

存储管理的主要功能包括分配和回收主存空间提高主存的利用率扩充主存对主存信息实现有效保护

一. 基本概念

1、存储器的结构

存储器的功能是保存数据,存储器的发展方向是高速度、大容量和小体积。

一般存储器的结构有“寄存器-主存-外存”结构和“寄存器-缓存-主存-外存”结构。存储组织的功能是在存储技术和CPU寻址技术许可的范围内组织合理的存储结构,使得各层次的存储器都处于均衡的繁忙状态。

(1)虚拟地址:对程序员来说,数据的存放地址是由符号决定的,故称为符号名地址,或者名地址。它是从0号单元开始编址,并顺序分配所有的符号名所对应的地址单元。由于符号名地址不是主存中的真实地址,因此也称为相对地址、程序地址、逻辑地址或称虚拟地址。

(2)地址空间:程序中由符号名组成的空间称为地址空间。源程序经过汇编或编译后形成二进制的目标程序。在目标程序中,程序指令和数据的位置按照字或字节单位根据它们的相对顺序来确定,称为相对地址。相对地址一般从0号地址开始依次编号。相对地址也称为逻辑地址或虚地址,把程序中由相对组成的空间叫做逻辑地址空间。相对地址空间通过地址再经过定位机构转换到绝对地址空间,绝对地址空间也叫做物理地址空间。

2、地址重定位

将逻辑地址转换成主存物理地址的过程称为地址重定位

在可执行文件装入时,需要解决可执行文件中地址(指令和数据)与主存地址的对应关系,由操作系统中的装入程序和地址成定位机构来完成。地址重定位机构来完成。地址重定位分为静态地址重定位和动态地址重定位。

静态地址重定位:静态地址重定位是指在程序装入主存时已经完成了逻辑地址到物理地址的变换,在程序执行期间不会再发生变化。静态地址重定位的优点是无须硬件地址变换机构的支持,它只要求程序本身是可重定位的,只对那些要修改的地址部分具有某种标识,由专门设计的程序来完成。在早期的操作系统中,多数都采用这种方法。

静态重定位的缺点是必须给作业分配一个连续的存储区域,在作业的执行期间不能扩充存储空间,也不能在主存中移动,多个作业难以共享主存中的同一程序副本和数据。

动态地址重定位:动态地址重定位是指在程序运行期间完成逻辑地址到物理地址的变换。其实现机制要依赖硬件地址变换机构,如基地址寄存器(BR)。动态地址重定位的优点是在程序执行期间可以换入和换出主存;程序可以在主存中移动,把主存中的碎片集中起来,可以充分利用空间;不必给程序分配连续的主存空间,可以较好地利用较小的主存块,可以实现共享。

二. 存储管理方案

存储管理的主要目的是解决多个用户使用主存地问题,主要包括分区存储管理分页存储管理分段存储器管理段页式存储管理以及虚拟存储管理

分区存储管理是早期的存储管理方案,其基本思想是把主存的用户区划分成若干个区域,每个区域分配给一个用户作业使用,并限定它们只能在自己的区域中运行,这种主存分配方案就是分区存储管理方式。按分区的划分方式不同,可分为固定分区、可变分区和可重定向分区。

(1)固定分区:固定分区是一种静态分区方式,在系统生成时已将主存划分为若干个分区,每个分区的大小可以不相等。操作系统通过主存分配情况表管理主存。这种方法的突出问题是已分配区中存在未用空间,原因是程序或作业的大小不可能刚好等于分区的大小,故造成了空间的浪费。通常将已分配分区内未使用空间叫做零头或内碎片。

(2)可变分区:可变分区是一种动态分区方式,存储空间的划分是在作业装入是进行的,故分区的个数可变,分区的大小刚好等于作业的大小。可变分区分配需要两种管理表格:已分配表,记录已分配分区的情况;未分配表,记录未分配区的情况。请求和释放分区的主要由如下4种算法:

最佳适应算法:假设系统中有n个空白区(空闲区或自由区),每当用户申请一个空间时,将从这n个空白区中找到一个最接近用户需求的分区。这种算法能保留较大的空白区,但缺点是查找合适空白区的代价大,且空白区不可能刚好等于用户要求的区,所以必然要将一个分区一分为二,随着系统不断地分配和释放空间,可能会产生无法再继续分配的小分区(碎片)。

最差适应算法:系统总是将用户作业装入最大的空白分区。这种算法将一个最大的分区一分为二,所以剩下的空白区通常也大,不容易产生碎片。

首次适应算法:每当用户作业申请一个空间时,系统总是从主存的低地址开始选择一个能装入作业的空白区。当用户释放空间时,此算法更容易实现相邻的空白区合并。

循环首次适应算法:与首次适应算法的不同之处是,每次分配都是从刚分配的空白区开始寻找一个能满足用户要求的空白区。

引入可变分区后虽然主存分配更灵活也提高了主存利用率,但是由于系统在不断地分配和回收中,必定会出现一些不连续的小的空闲区,尽管这些小的空闲区的总和超过某一个作业要求的空间,但是由于不连续而无法分配。产生了未分配区的无用空间,通常称之为碎片。解决碎片的方法是拼接(或称紧凑),即向一个方向(例如向低地址端)移动已分配的作业,使那些零散的小空闲区连成一片。

分区存储管理

例:某计算机系统的内存大小为128K,采用可变分区的分配方式进行内存分配,当前系统的内存使用情况如下图所示,现有作业4想要申请9K的内存,不同的存储分配算法各自是怎么样分配的呢?

2ac1c77d2052066a5cf83afc613f74ec.png

(3)可重定位分区:可重定位分区时解决碎片问题简单而又行之有效的方法。其基本思想是:移动所有已分配好的分区,使之成为连续区域。如同队列有一个队员出列,指挥员叫大家“靠拢”一样。分区“靠拢”的时机是用户请求空间得不到满足时或某个作业执行完毕时。由于靠拢是需要代价的,所以通常是在用户请求空间得不到满足时进行。需要注意的是,当进行分区“靠拢”时会导致地址发生变化,所以有地址重定位问题。

分区保护的目的是防止未经核准的用户访问分区,常用如下两种方式:

(1)上界/下界寄存器保护:上界寄存器中存放的是作业的装入地址,下界寄存器装入的是作业的结束地址,形成的物理地址必须满足如下条件:

上界寄存器≦物理地址≦下界寄存器

(2)基址/限长寄存器保护:基址寄存器中存放的是作业的装入地址,限长寄存器装入的是作业的长度,形成的物理地址必须满足如下条件:

基址寄存器≦物理地址

三. 分页存储管理

尽管分区管理方案是解决多道程序共享主存的可行方案,但是此方案的主要问题是用户程序必须装入连续的地址空间中,若没有满足用户要求的连续空间时,则需要进行分区靠拢操作,这就要耗费系统时间。为此引入了分页存储管理方案。

1、分页存储管理

(1)分页管理

将一个进程的地址空间划分成为若干个大小相等的区域,称为页。相应的,将主存空间划分成与页相同大小的若干个物理块,称为块或页框。为进程分配主存时,可将进程中若干页分别装入多个不相邻接的块中。

(2)地址结构

分页系统的地址结构由两部分组成:前一部分为页号P;后一部分为偏移量W,即页内地址。下图中的地址长度为32位,其中0~11位为页内地址(每页大小为4KB),12~31位为页号,所以允许的地址空间大小最多为1MB个页。

fa194561c2ce4ff97b6e6e8e28d5d8cc.png

(3)页表

将进程的每一页离散地分配到内存的多个物理块中后,系统应保证能在内存中找到每个页面所对应的物理块。为此,系统为每个进程建立了一张页面映射表,简称页表。如图所示,每个页在页表中占一个表项,记录程序中的某页在内存中对应的物理块号。进程在执行时,系统通过查找页表,就可以找到每页所对应的物理块号,实现页号到物理块号的地址映射。

68f377740077b52c765c198d9160c9ef.png

(4)地址变换机构

地址变换机构的基本任务是利用页表把用户程序中的逻辑地址变换成内存中的物理地址,即将用户程序中的页号变换成内存中的物理块号。页表寄存器用来存放页表的起始地址和页表的长度。在进程未执行时,每个进程对应的页表的起始地址的长度存放在进程的PCB中,当此进程被调度时,就将它们装入页表寄存器。进行地址变换时,系统将页号与页表长度进行比较,如果页号大于等于页表寄存器中的页表长度L(页号从0开始),则产生越界中断。如未出现越界,则根据页表寄存器中的页表的起始地址的页号计算出此页在表项中的位置,得到此页的物理块号,将此物理块号装入物理地址寄存器中。于此同时,将有效地址(逻辑地址)寄存器中页内地址直接装入物理地址寄存器的块内地址字段中,完成从逻辑地址到物理地址的变换。

  1. 页式存储管理

高级程序语言使用逻辑地址,而运行状态和内存中使用物理地址。

优点:内存利用率高,碎片小,分配及管理简单。

缺点:增加了系统开销,可能产生抖动现象。

逻辑地址=页号+页内地址 物理地址=物理块号+页内地址

f03dd2e859c9d02616dc1cae7ab4d6ce.png

物理块号

1ad1ab65b9359e714d2cbfe9a18772fd.png

物理地址

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值