系统相关
首页 > 系统相关> > 操作系统 内存管理 非连线分配方式

操作系统 内存管理 非连线分配方式

作者:互联网

前言

上篇介绍了内存管理的连续分配方式,本文介绍非连续分配方式。

非连续分配方式

分页式存储管理方式

分页存储的基本概念

将内存空间分为一个个大小相等的分区(如每个分区4K),每个分区就是一个页框、或称页帧、内存块、物理块
每个页框有一个编号,即页框号、或称内存块号、页帧号、物理块号
页框号从0开始。

将用户进程的地址空间也分为与页框大小相等的一个个区域,称为页、或称页面
每个页面也有一个编号,即页号,页号也是从0开始的。

可以这么理解,页框是物理地址,编号为页框号;页面是逻辑地址,编号为页号;

操作系统以页框为单位为各个进程分配内存空间;
进程的每个页面分别放入一个页框中,也就是说进程的页面与内存的页框有一对一的关系;
各个页面不必连续存放,也不必按先后顺序来,可以放到不相邻的各个页框中。

分页存储的地址转换

image.png
由上图看到,要进行逻辑地址到物理地址的转换,需要以下几步:

  1. 计算出逻辑地址对应的页号
  2. 计算出该页号对应对应页面在内存中的起始地址
  3. 计算出逻辑地址在页面内内的偏移量
  4. 物理地址 = 页面地址 + 页面偏移量

如何计算页号和页面偏移量

计算机中用二进制表示逻辑地址,如果一个页面大小为4k时,则分配如下图所示:
image.png

如何计算页号对应的页框号

操作系统会为每个进程建立一张页表,用来记录本进程内每个页面在内存中存放的位置;

  1. 一个进程对应一张页面
  2. 进程的每一页应用 一个页表项
  3. 每个页表项由页号和块号组成
  4. 页面记录进程页面和实际存放的内存的内存块之间的对应关系
  5. 每个页表项的长度是相同的,页号是隐含的

image.png

如下示例,用3个字节表示块号,则该进程的页表大小为3n个字节;当然,实际中计算机是用4个字节表示块号,是为了方便页表的查询,使得每个页面恰好可以装得下整数个页表项。
image.png

基本地址变换机构

基本地址变换机构是用于实现逻辑地址到物理地址转换的一组硬件机构。 基本地址变换机构可以借助进程的页表将逻辑地址转换为物理地址。
通常会在系统中设置一个页表寄存器PTR,存放页表在内存中的起始地址F和页表长度M。其中页表长度是指这个页表中总共有几个页表项,即总共有多少页;页表项长度是指每个页表项占多大的存储空间;页面大小指一个页面占多大的存储空间;
进程未执行时,页表的起始地址和页表长度放在进程控制块PCB中;当进程被调度时,操作系统内核会把他们放到页表寄存器中。

具有快表的地址变换机构

它是基于基本地址变换机构的改进版本。

局部性原理

局部性原理是指CPU访问存储器时,无论是存取指令还是存取数据,所访问的存储单元都趋于聚集在一个较小的连续区域中。

基于局部性原理,在上文介绍的基本地址变换机构中,每次访问一个逻辑地址,都需要查下内存中的页表,可能连续很多次查到的都是同一个页表,于是便有了块表。

快表

快表,又称为联想寄存器TLB,是一种访问速度比内存快很多的高速缓冲存储器,用来存放当前访问的若干页表项,以加速地址变换的过程。与此对应,内存中的页表常称为慢表。

两种变换机构总结

image.png

两级页表

单级页表存在的问题

  1. 假设32位指令机器,4G内存,页面大小为4KB,则共划分为2^32 / 2^12 = 220个内存块,即该系统中用户进程最多将会有220个页表项,再假设页表项长度为4B,即一个页表最大需要 2^20 * 4B = 222B,则共需要222/212=210个页框存储该页表。
    所以第一个问题是需要专门给该进程分配2^10=1024个连续的页框来存储这个进程的页表。

  2. 由于局部性原理,进程在一段时间内可能只需要访问几个页面就可以正常运行了。因此没必要让整个页表都常驻内存。

解决问题一

可以将页表再进行分组,使每个内存块刚好刚好可以放入一个分组。如刚才的例子,可以让每1K个连续的页表为一组,1K * 4B = 4K,刚好可以占满一个内存块,再将各组离散的放到各个内存块中。
当然此时需要为离散分配的页表再建立一张页表,称为页目录表、或称外层页表、顶层页表
image.png

解决问题二

即使用虚拟存储技术。
可以在需要访问页面时才把页面调入内存,可以给每个页表项添加一个是否在内存中的标志位;
若想访问的页面不在内存中,则产生缺页中断,然后将目标页面从外存调入内存。

分段存储管理方式

进程的地址空间,按照程序程序自身的逻辑关系划分为若干个段,每个段都有一个段名,每段从0开始编址。
内存分配规则:以段为单位进行分配,每个段在内存中占据连续空间,但各个段之间可以不相邻。
image.png

分段与分页的对比

段页式管理方式

综合了分页式和分段式的优缺点;
将进程按照逻辑模块分段,再将各段分页,再将内存空间分为大小相同的内存块,然后进程内各个分页装入各个内存块中。

标签:操作系统,连线,地址,页表,进程,页面,地址变换,内存
来源: https://blog.csdn.net/u014099894/article/details/114744990