0X2A

848操作系统(三) 内存管理

2020-09-25 · 3 min read

内存管理

内存管理基础

内存管理概念

内存管理功能:

  1. 内存空间分配和回收
  2. 地址转换
  3. 内存空间扩充
  4. 存储保护

程序装入与链接

用户程序要在系统中运行,必须先装入内存,一般有如下步骤:

  1. 编译
  2. 链接
  3. 装入

链接有以下几种方式:

  1. 静态链接
    运行之前就把目标模块以及库函数连接成一个完整的装配模块,不再拆开。这种方式需要解决两个问题:
    • 对相对地址的修改
    • 变换外部调用符号
  2. 装入时动态链接
    装入内存的时候再进行链接。
  3. 运行时动态链接
    运行的时候需要该模块再调进内存并连接。

装入有以下方式:

  1. 绝对装入方式
    装入的是绝对地址,一般适用于单道程序的环境。
  2. 可重定位装入方式
    装入的相对地址,装入时对目标程序指令和数据修改的过程叫重定位
    地址通常是装入时一次完成的,故也称为静态重定位。一旦作业装入内存,则必须分配要求的所有内存空间。(毕竟要给所有指令和数据编址)故又称为静态重定位。
  3. 动态运行时装入
    也成为动态重定位。程序装入内存后,并不把所有地址都转换成绝对地址,而是推迟到程序真正要执行的时候才执行重定位。这种方式需要一个重定位寄存器实现。

逻辑地址与物理地址空间

逻辑地址指的是编译后每个模块都从0开始的相对地址
物理地址空间指的是内存中的物理党员集合。是地址转换的最终地址,最后都要根据物理地址从主存中获得数据。

内存保护

内存保护一般可以采用两种方法

  1. 设置一对上下限寄存器
    每当CPU要访问一个地址时,将该地址和寄存器的值进行对比。
  2. 使用重定位寄存器和界地址寄存器
    重定位寄存器存储的是最小的物理地址值,界地址寄存器存储的是逻辑地址的最大值。
    对于CPU要访问的地址先和界地址值比对,如果符合要求再加上重定位寄存器的值获得物理地址。