地址空间
地址空间的概念
要保证多个应用程序同时处于内存中且互不影响,则需要解决两个问题:保护和重定位。一个原始的方法就是IBM360上:给内存块标记上一个保护键,但是这是一个缓慢且复杂的解决方法。
一个更好的办法是创建一个新的内存抽象:地址空间。就像进程的概念创造了一雷抽象的CPU以运行程序一样。地址空间是一个进程可用于寻址内存的一套地址集合。每个进程都有一个自己的地址空间,并且这个地址空间独立于其他进程的地址空间(除了在一些特殊情况下进程需要共享他们的地址空间外)。
基址存储器与界限存储器
这个方法曾经很常见,但是有能力把更复杂(而且更好)的机制运用在现代CPU芯片上之后,这个方法就不再使用了。
这个简单的解决办法使用一种简单的动态重定位。它所做的是简单的把每个进程的地址空间映射到物理内存的不同部分。所使用的经典办法是给每个CPU配置两个特殊硬件寄存器,通常叫基址寄存器和界限寄存器。当一个程序运行时,程序的其实物理地址装载到基址寄存器中,程序的长度装载到界限寄存器中。
使用基址寄存器和界限寄存器重定位的缺点是,每次访问内存都需要进行加法和比较运算。比较运算可以很快执行,但是加法运算由于进位传递时间的问题,在没有使用特殊电路的情况下会显得很慢。