3.1 内存管理概念

3.1.1 内存管理的基本原理和要求


1、程序装入和链接(把逻辑地址转化为物理地址)
创建进程首先要将进程和数据装入内存。将用户源程序变为可在内存中执行的程序,通常需要以下几个步骤:
1、编译
2、链接
3、装入
在这里插入图片描述

程序链接有以下几种方式

  • 静态链接
  • 装入时动态链接:边装入边链接
  • 运行时动态链接:程序执行中需要该目标模块时才进行链接

内存的装入模块在装入内存时,同样有三种方式

  • 绝对装入:知道程序将驻留在内存中某个位置,编译器将产生绝对地址目标代码。(适合单道程序系统)

  • 可重定位装入 静态重定位(多道程序环境下),多个目标模块的起始地址通常从0开始,程序中其他地址都是基于起始地址的。一个作业装入内存时必须分配该作业全部要求的全部内存空间
    在这里插入图片描述

  • 运行时装入也叫动态重定位 程序在内存中发生移动,则需要动态装入方式 可以指装入部分代码即可,可以动态申请内存空间。


2、逻辑地址空间与物理地址空间

逻辑地址(相对地址):编译后,目标模块都是从0编址,称为该目标模块的逻辑地址(相对地址)

物理地址空间:是指内存中物理单元的集合,它是地址转换的最终地址。
装入程序将可执行代码装入内存时,必须通过地址转换将逻辑地址转为物理地址,这个过程叫 地址重定位


3、内存保护
(1)、在CPU中设置一对上下限寄存器,判断有无越界。
(2)、采用重定位寄存器(基址寄存器)界地址寄存器 通过比较界地址寄存器中的值与逻辑地址值来判断是否越界。


3.1.2 覆盖于交换


3.1.3 连续分配管理方式

1)单一连续分配

内存在此方式下分为系统区用户区,系统区仅供操作系统使用,通常在地址部分,无需进行内存保护,因为内存中永远只有一道程序
优点: 无内部碎片、简单
缺点: 有外部碎片、存储器利用极低

2)固定分区分配

每个分区中只装入一道作业
在这里插入图片描述
在这里插入图片描述

3)动态分区分配

在进程装入内存时,根据进程的大小动态建立分区。
动态分区算法随着时间的推移,内存会产生很多的外部碎片,与固定分区的内部碎片正好相对。克服外部碎片可以通过 **紧凑**技术来解决。

1.首次适应算法顺序查找,找到第一个满足要求的分区 最简单、最快、最好
2.最佳适应算法空闲分区按容量递增次序链接。每次分配内存时顺序查找空闲分区链(或空闲分区表),找到大小能满足要求的第-一个空闲分区。 优先选择小的空闲分区 产生最多的外部碎片
3.最坏适应算法空闲分区按容量递减次序链接。每次分配内存时顺序查找空闲分区链(或空闲分区表),找到大小能满足要求的第-一个空闲分区。 优先选择大的空闲分区
4.邻近适应由首次适应算法演变而来不同之处是分配内存时,从上次查找结束的位置继续查找
在这里插入图片描述


3.1.4 非连续分配方式

1、基本分页存储管理方式


进程中的块称为 “页”内存中的块称为 “页框”

在这里插入图片描述
在这里插入图片描述


页表

第一部分是页号,第二部分是物理内存中的块号(页框号)

若页号占了20位,则表示页面上有2^20个页表项
在这里插入图片描述
页号类似数组的下标,块号类似值,只有块号占用内存空间
在这里插入图片描述


基本地址变换机构
地址变换机构的任务是将逻辑地址转换为内存中的物理地址

在这里插入图片描述
①计算页号P,和页内偏移量
②比较页号P和页表长度M,P≥M产生越界中断
③P对应页表项地址 = 页表起始地址F + 页号P * 页表项长度
④计算E = b*L + W
在这里插入图片描述
一页1K,2500自然在顺序第三块,对应页号为2,页号2内偏移2500-2048=452


具有快表的地址变换机构

若页表全部放在内存中,则存取一个数据或一条指令至少需要 两次访存 第一次访问页表,确定数据的物理地址,第二次根据地址访问数据。

在这里插入图片描述
一般快表的命中率可达90%以上快表的有效性基于著名的局部性原理

在这里插入图片描述

在这里插入图片描述


两级页表

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


2、基本分段存储管理方式
1)分段
进程的地址空间:按照程序自身的逻辑关系划分为若千个段每个段都有一个段名(在低级语言中,程序员使用段名来编程),每段从0开始编址

内存分配规则:以段为单位进行分配,每个段在内存中占据连续空间,但各段之间可以不相邻。
在这里插入图片描述
段号位数决定每个进程最多可以分几个段
段内地址位数决定了每个段的最大长度是多少

2)段表
在这里插入图片描述
在这里插入图片描述
每个段对应一个段表项,其中记录了该段在内存中的起始位置又叫基址段的长度
各个段表项的长度是相同的
段号是可以隐含的,不占内存空间


分段系统的地址转换

在这里插入图片描述
在这里插入图片描述
分页用户进程地址空间是一维的,程序员只需给出一个记忆符即可表示一个地址。分段用户进程地址空间是二维的,程序员在标识一个地址时,既要给出段名,也要给出段内地址。

分段分页更容易实现信息的共享和保护

分页对用户不可见; 分段对用户可见
在这里插入图片描述


3、段页式存储管理方式
在这里插入图片描述

在这里插入图片描述

一个进程中,段表只有一个,而页表可以有多个


在这里插入图片描述


例题
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
页号不占用存储单元,但是页框号占用,所以对应的逻辑地址一个页表项应当加 4B

猜你喜欢

转载自blog.csdn.net/weixin_38220799/article/details/109150460
3.1
今日推荐