操作系统知识点——内存管理(二)

一、内存的非连续分配管理方式

(一)基本分页存储管理方式

1、分页原理

在分页存储管理中,用户的作业的地址空间被划分为若干个大小相等的区域,成为页或页面。相应地,将内存的存储空间也分成与页面大小相等的区域,成为块或物理块。在为作业分配存储空间时,总是以块为单位分配,可以将作业中的任意一页放到内存中的任意一块中。

在调度作业时,要求将它的所有页一次调入内存中,若内存中没有足够的块,则作业等待。这种存储管理方式称为简单分页或纯分页。同时页面的大小要选择适中(通常为2的整数幂),以方便地址变换,一般为512B-4KB

分页系统中的逻辑地址包含两部分内容:前一部分为页号P,后一部分为页内位移W(也称页内偏移量)。这两部分构成的地址长度为32位。其中0-11位是页内位移地址,即每页的大小为212B=4KB12-31位是页号,即一个进程运行的最多页数为220=1M页。假设逻辑地址A,页面大小为L,则页号P=int)(A/L)。页内位移W=A%L

 

2、页表

为了将逻辑地址上连续的页号映射到物理内存中后成为离散分布的多个物理块,需要将每个页面和每个物理块一一对应,这种映射关系就体现在页表上。页表中每一个页表项都由页号和物理块号组成,根据页表项就可以找到每个页号所对应的物理内存块号。页表通常存放在内存中

在基础分页系统中,页表长度M是由页号的位数决定的。而页表的大小可以理解为一个矩形的面积,这个矩形的长度就是页表的长度M,宽度是每个页表项的大小,即页号的位数。从页表的大小的计算公式可知,页表大小和页表长度成正比,而页表长度又随着页号位数的增长呈指数式增长。

3、基本地址变换机构

设页面大小为L,则从逻辑地址A得到物理地址E去访问内存的步骤为:

(1)计算页号P=int)(A/L);页内位移W=A%L

(2)比较页号P与页表长度M的大小,若P>=M,则产生越界中断,否则继续执行。

(3)页表起始地址F与页号P和页表项长度的乘积相加,用得到的地址值到内存中取出该内存单元存放的数b,这个b就是物理块号。

(4)物理块号b和物理块大小(与页面大小相同,为L)的乘积与页内位移W组合成物理地址E

(5)用得到的物理地址E去访问内存。

由上面的分析可知,存取一个数据或一条指令需要至少访问两次内存。

 

4、具有块表的地址变换机构

为了提高地址变换速度,可以在地址变换机构中增设一个具有并行查找功能的高速缓冲存储器(又称联想存储器或快表),将部分页表项放在快表(TLB)中。增加块表后的地址变换过程如下:

第一步,根据逻辑地址A和页面大小L得出页号P和页内位移W

第二步,先将页号P与快表中的所有页号进行对比,若有匹配的页号,则直接读出对应的物理块号,与页内位移拼接得到物理地址;若没有匹配的页号,则还需要访问内存中的页表,从页表中取出物理块号,与页内位移拼接得到物理地址,并将此次的页表项存入快表中。

第三步,用得到的物力地址访问内存。

 

5、两级页表和多级页表

两级页表的系统将逻辑地址划分为外层页号、外层页内地址和页内地址。先用外层页号P1在外部页表上查找,找出的单元内容是二级页表的首地址,页表的首地址加上外层页内地址P2就是页表项的地址,取出里面是数值(即物理块号),物理块号与 页内地址d相组合就得到了物理地址。

对于32位的机器(逻辑地址的位数是32位),采用两级页表机构是合适的,但是对于64位的系统,两级页表机构会使页表的大小变得不可接受,所以可以通过继续增加页表的级数来减小页表的大小,不过会使页表的数量大大增加。多级页表的最主要缺点是要多次访问内存,每次地址变换很浪费时间。

 

6、页的共享与保护

在分页存储管理系统中,实现共享的方法是使共享用户地址空间中的页指向相同的物理块。在分页存储管理系统中实现共享比在分段系统中要困难,比较难以共享。

分页存储管理系统可以为内存提供两种保护方式:一种是地址越界保护,即通过比较地址变换机构中的页表长度和索要访问的逻辑地址中的页号来完成;另一种通过页表中访问控制信息对内存信息提供保护。

7、基本分页存储管理方式的优缺点

优点:①内存利用率高;②实现了离散分配;③便于存储访问控制;④无外部碎片。

缺点:①需要硬件支持(尤其是快表);②内存访问效率下降;③共享困难;④内部碎片。

(二)基本分段存储管理方式

1、分段存储原理

在分段存储管理系统中,作业的地址空间由若干个逻辑段组成,每个分段是一组逻辑意义上相对完整的信息集合。每个分段都有自己的名字,每个分段都从0开始编址,并采用一段连续的地址空间。因此整个作业的地址空间是二维的(端的分类是一维,段内位移是另一维)。分段存储管理中以段为单位分配内存,每端分配一个连续的内存区,但各段之间不要求连续。

分段存储管理系统的逻辑地址结构由段号S和段内位移W(也叫段内偏移量)组成。段号S通常从0开始的连续正整数。当逻辑地址结构中段号和段内位移占用的位数确定之后,一个作业地址空间中允许的最大段数和各段的最大长度也就确定了。例如段号S占用16位,段内位移占用16位,则一个作业最多可以有216=65536段,最大段长为64KB

 

这里说明为什么分页存储管理系统的地址空间是一维的,而分段存储管理系统的地址空间是二维的。这里要注意段号与页号的来历是不同的,段号是程序员自己定义的,每个段都有特定含义的,因此不同的段大小不同,代表的意义也不同,因此要想找到某个数据或指令,需要指定段号和段内位移两个变量。而页号是系统自动生成的,本身地址是线性连续的,当要访问特定地址时,只需要提供地址即可,系统会自动将地址划分为页号和业内位移(地址整除页的大小,商为页号,余数为页内位移),而页号对于程序员来说没有实际意义,因此是一维的。

2、段表及地址变换过程

为了实现逻辑地址到物理地址的变换,系统为每个进程建立一个段表,其中每个表项描述一个分段信息,表象包括段号、段长度和该段的内存起始地址。

在系统中设置了段表寄存器,用于存放段表起始地址和段表长度。在地址变换时,系统将逻辑地址中的段号与段表长度进行比较,若段号超过了段表长度,则表示段号越界,产生越界中断;否则根据段表气质地址和段号计算出该段对应段表项的位置,从中读出该段在内存中的起始地址,然后检查段内位移是否超过该段段长,若超过,则同样产生越界中断;否则将该段的起始地址与段内位移相加,从而得到要访问的物理地址。为了提高内存访问速度,也可以使用快表。

从逻辑地址A得到物理地址E再去访问内存的步骤如下:

1、从逻辑地址A中取出前几位作为段号S,后几位作为段内位移W

2、比较S与段表长度M,若S>=M,则产生越界中断,否则继续。

3、取出段表起始地址F和段号S,使其相加,用得到的地址到内存中取出该内存单元存放的数。取出来的数的前几位是段长C,后几位是段内的起始地址(基址)b。若段内位移W>=C,则产生越界中断,否则继续。

4、段的基址b和段内位移W相加得到物理地址E

5、用得到的物理地址E去访问内存。

 

3、段的共享与保护

在分段存储管理系统中,分段的共享是通过使多个作业的段表中相应表项都指向被共享段的同一个物理副本来实现的。在多道程序环境下,必须注意共享段中信息保护问题。当一个作业正从共享段中读取数据时,必须防止另一个作业修改此共享段中的数据。在当今大多数实现共享的系统中,程序被分为代码区和数据区。不能修改的代码称为纯代码或可重入代码,这样的代码和不能修改的数据是可以共享的,而可修改的程序和数据则不能共享。

分段管理的保护主要有两种:地址越界保护和访问控制保护。

4、基本分段存储管理方式的优缺点

优点:①便于程序模块化处理和处理变换的数据结构;②便于动态链接和共享;③无内部碎片。

缺点:需要硬件支持;②为满足分段的动态增长和减少 外部碎片,要采用拼接技术;③分段的最大尺寸受到内存可用空间的限制;④有外部碎片。

5、分段与分页的区别

分页

分段

页是信息的物理单位

段是信息的逻辑单位

对内存的分配以物理块为单位

对内存的分配以段为单位

分页的目的是系统管理所需,为了提高内存利用率

分段的目的是为了更好地满足用户的需要

页的大小固定且由系统决定

段的长度不定,不同的段有不同的段长,是由用户编写程序决定的

作业地址空间是一维的

作业地址空间是二维的

有内部碎片,无外部碎片

有外部碎片,无内部碎片


(三)基本段页式存储管理方式

1、段页式存储原理

在段页式存储管理系统中,作业的地址空间首先被分成若干个逻辑段,每段都有自己的段号,然后再将每一段分成若干大小固定的页。对于内存空间的管理仍然和分页管理一样,将其恩城若干个和页面大小相同的物理块,对内存的分配以物理块为单位。段页式存储管理系统的逻辑地址包含3部分内容:段号S、段内页号P和页内位移D

 

2、段页式地址变换过程

为了实现地址变换,段页式存储管理系统中需要同时设立段表和页表。系统为每个进程建立一个段表,每个分段有一张页表。段表的表项中至少包括段号、页表起始地址和页表长度,其中页表起始地址指出该段的页表在内存中的起始位置;页表的表项中至少包括页号和块号。此外,为了便于实现地址变换,系统中还需要配置一个段表寄存器,用来存放段表起始地址和段表长度。

从逻辑地址A得到物理地址E再去访问内存的步骤如下:

1、从逻辑地址A中取出前几位为段号S,中间几位为页号P,后几位为业内位移D

2、比较段号S和段表长度M,若S>M,则产生越界中断,否则继续。

3、取出段表起始地址F与段号S相加,用得到的地址值到内存中取出该内存单元存放的数,取出来的数的前几位是页表长度C,后几位是页表起始地址d。若页号P>C,则产生越界中断,否则继续。

4、页表起始地址d与页号P和页表项长度的乘积相加得到页表项在内存中的物理地址,查找到该地址存放的数值为物理块号b

5、用物理块号b与页内位移D组成成物理地址E

6、用得到的物理地址E去访问内存。

由上述步骤可知,段页式存储管理系统的地址变换需要访问内存3次,所以同样可以使用高速缓冲存储器(快表)来减少对内存的访问次数。


3、段页式的内部碎片数

段页式的确结合了段式和页式的优点,而且克服了段式的外部碎片问题。但段页式的内部碎片并没有做到和页式一样少。页式存储管理方式平均一个程序有半页碎片,而段页式存储管理方式下平均一段就有半页碎片,而一个程序往往有很多段,所以平均下来段页式的内部碎片要比页式多。

猜你喜欢

转载自blog.csdn.net/weixin_36378917/article/details/80913823