操作系统之内存管理:2、内存管理的功能(内存分配回收、扩充、地址转化、存储保护)

    科技2024-07-28  75

    2、内存管理的功能

    功能1:内存空间的分配与回收连续分配管理:方法1:单一连续分配方法2:固定分区分配方法3:动态分区分配1、什么是动态分区分配?2、系统用什么样的数据结构记录内存使用情况?3、当很多个空闲分区都能满足需求时,应该选择哪个分区进行分配?(首次适应、最佳适应、最坏适应、临近适应)4、如何进行分区的分配与回收操作?5、如何解决动态分区分配碎片化问题? 非连续分配管理方式 功能2:内存空间的扩充方法1、覆盖技术方法2、交换技术方法3、虚拟存储技术 功能3:地址转化方法1、绝对装入方法2、可重定位装入方法3、动态重定位 功能4:存储保护方法1:上下限寄存器法方法2:重定位寄存器(基址寄存器)和界地址寄存器法(限长寄存器) 看几个问题

    功能1:内存空间的分配与回收

    连续分配管理:

    方法1:单一连续分配

    方法2:固定分区分配

    问题:如何对每一块分区进行记录呢?

    方法3:动态分区分配

    1、什么是动态分区分配?

    一个接一个的放入。

    2、系统用什么样的数据结构记录内存使用情况?

    3、当很多个空闲分区都能满足需求时,应该选择哪个分区进行分配?(首次适应、最佳适应、最坏适应、临近适应)

    4、如何进行分区的分配与回收操作?

    能合并就合并

    5、如何解决动态分区分配碎片化问题?

    采用“拼凑”技术,就是将使用的存储空间拼接到一起,闲散的存储空间拼接到一起。例如现在内存中有互不相邻的三块空间:1K,3K,5K;现在有一个7K的程序要运行,但是由于内存空间不连续而无法运行,此时就需要将三块空间拼接。

    非连续分配管理方式

    见下篇: 操作系统之内存管理:3、基本分页存储管理

    功能2:内存空间的扩充

    方法1、覆盖技术

    看上图: 假设现在B、C不能同时放入内存,D、E、F不能同时放入内存; 所以: 可以将A放入固定区;(8K) 将B、C设置一个覆盖区用于存放B、C(只需10K) 将D、E、F设置一个覆盖区用于存放D、E、F(只需12K) 从而从逻辑上达到内存扩充的目的,以淘汰

    方法2、交换技术

    方法3、虚拟存储技术

    功能3:地址转化

    方法1、绝对装入

    方法2、可重定位装入

    装入后可执行文件中的地址都被修改为了物理地址,地址变换在装入时一次性完成

    方法3、动态重定位

    在装入后通过重定位寄存器和逻辑地址计算数据存放地址,即使程序移动后,也可以通过再次计算得到新的物理地址

    功能4:存储保护

    方法1:上下限寄存器法

    用物理地址设置俩个上下界寄存器,CPU访问存储单元时判断是否在上下界寄存器地址范围内

    方法2:重定位寄存器(基址寄存器)和界地址寄存器法(限长寄存器)

    重定位寄存器:存放起始物理地址 界地址寄存器:存放最大逻辑地址 此时,CPU想要访问逻辑地址80,首先要与界地址寄存器比较判断是否越界,未越界则访问物理地址:80+100=180.

    Processed: 0.015, SQL: 8