TIP
在内存管理的固定分区方法中,地址重定位和存储保护是两个关键概念,它们确保程序正确执行并保护内存数据的完整性。以下是对这两个方面的详细解释:
¶1. 地址重定位(Address Relocation)
地址重定位是指将程序的逻辑地址转换为物理地址的过程。在固定分区内存管理中,内存被划分为若干固定大小的分区,每个分区都可能被一个进程占用。当程序装载到某个分区时,逻辑地址需要被调整为物理地址,以正确访问内存中的数据。
-
逻辑地址与物理地址
- 逻辑地址:由程序生成,通常从 0 开始,描述程序内部的内存访问。
- 物理地址:程序实际运行时的内存地址,由操作系统或硬件计算得出。
-
重定位的方式
- 静态重定位:
- 程序在装载时由操作系统将逻辑地址加上分区的起始地址,转换为物理地址。
- 该方法简单,但程序装载后地址固定,无法移动。
- 动态重定位:
- 程序运行时,通过硬件中的**重定位寄存器(Base Register)**实时完成地址转换。
- 在访问内存时,硬件会将逻辑地址加上分区的起始地址来计算物理地址。
- 静态重定位:
-
示例: 如果一个程序需要访问逻辑地址 100,而该程序被加载到起始地址为 1000 的分区中,则:
- 物理地址 = 分区起始地址 + 逻辑地址 = 1000 + 100 = 1100
¶2. 存储保护(Memory Protection)
存储保护的目的是防止一个程序访问到其他程序或操作系统的内存,确保内存安全性。
-
实现方法:
- 界限寄存器(Limit Register):
- 每个分区设置一个界限寄存器,记录该分区的最大地址范围。
- 在访问内存时,硬件检查物理地址是否在分区范围内,超出范围则触发保护异常(Protection Fault)。
- 重定位寄存器和界限寄存器联合使用:
- 重定位寄存器保存分区的起始地址,用于地址转换。
- 界限寄存器保存分区大小,用于检查是否越界。
- 访问内存时,实际地址需满足:
实际地址 >= 起始地址且实际地址 < 起始地址 + 分区大小
- 界限寄存器(Limit Register):
-
保护机制的作用:
- 防止一个程序越界访问其他分区的内存。
- 避免意外覆盖操作系统或其他程序的关键数据。
- 在多道程序系统中,保障各进程互不干扰。
-
示例: 假设分区起始地址为 1000,分区大小为 500:
- 合法范围:1000 ≤ 地址 < 1500
- 如果程序试图访问地址 1600,硬件会检测到越界并触发保护异常。
¶3. 地址重定位与存储保护的结合
在固定分区中,地址重定位和存储保护通常通过硬件协作实现:
-
每个分区分配一个重定位寄存器和一个界限寄存器。
-
在程序访问内存时:
- 重定位寄存器负责将逻辑地址转换为物理地址。
- 界限寄存器确保转换后的物理地址在合法范围内。
-
若地址转换或越界检查失败,操作系统会终止相关程序,并防止内存损坏。
¶总结
-
地址重定位解决了程序在不同内存分区中的装载问题,使逻辑地址转换为物理地址。
-
存储保护通过限制内存访问范围,确保程序运行的安全性和稳定性。
-
在固定分区方法中,这两者结合通过硬件(如寄存器)实现高效的内存管理和保护。
(完)