[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/