Skip to content

虚拟内存

基本概念

地址空间

地址空间(address space): 进程的所有内存状态(code,stack,heap)

逻辑地址/虚拟地址: 指令中内存引用的地址。 比如可以在汇编代码里访问地址0. 但是操作系统会将逻辑地址0映射到别的物理地址

物理地址: 实际访问内存的地址。由操作系统和硬件翻译

地址绑定

pages.cs.wisc.edu/~remzi/OSTEP/Chinese/15.pdf

每个 CPU 需要两个硬件寄存器:基址(base)寄存器。和界限(bound)寄存 器,有时称为限制(limit)寄存器

  • 程序执行时, 操作系统会决定其在物理内存中的实际加载地址,并将起始地址记录在基址寄存器中。
  • 运行时, phy addr=vir addr+base
  • 如果进程需要访问超过limit或者为负数的虚拟地址,CPU 将触发异常
  • 可以在进程运行时改变进程的地址空间

这种方法也被称为动态 (基于硬件) 重定位。

静态(基于软件)重定位

利用加载程序(loader)重写指令中的地址 缺点: 无法实现访问保护 一旦完成不能改变

分段

pages.cs.wisc.edu/~remzi/OSTEP/Chinese/16.pdf

分段(Segmentation):

分页

Comments