[OS]Three Easy Pieces Chapter 15

Mechanism: Address Translation

1 Assumptions

最初的假设很简单:

  • 用户地址空间在物理内存中连续存放
  • 用户地址空间不大于物理内存大小
  • 每个用户地址空间都一样大

2 Dynamic(Hardware-based) Relocation

早期,在没有硬件支持的时候,有些操作系统支持软件重定位(static relocation)。loader程序负责改写另外一个程序中涉及到的地址为实际的物理地址。这种方法不提供任何的保护,同时也很难修改某个程序在物理内存中的位置。

后面,在硬件的支持下,提出了动态重定位。每个CPU内部有一个base寄存器和一个bound寄存器,负责将虚拟地址转换为实际的物理地。
$$
physical\space address = virtual \space address + base
$$
这种地址转换是发生在运行期间的,并且在程序已经开始运行之后,也可以重新定位程序。

bound寄存器负责提供内存保护,内存管理单元(MMU)检查一个程序提供的虚拟地址是否在bound范围内,如果不在,则触发异常,将进程杀死;如果合法,才接着进行地址转换,将其转换为实际的物理地址。

3 Operating System Issues


[OS]Three Easy Pieces Chapter 15
https://erlsrnby04.github.io/2024/11/10/OS-Three-Easy-Pieces-Chapter-15/
作者
ErlsrnBy04
发布于
2024年11月10日
许可协议