作業系統可以使用一種稱為重定位的技術來管理每個程序在記憶體中的存儲位置。 作業系統核心子產品通常存儲在最高的記憶體位址中。 當程式編譯并執行時,它從零位址位開始處理,最大位址等于總記憶體大小減去作業系統大小。 系統初始化程序被加載并配置設定一個連續的記憶體段。 程序的最小實體位址是基位址,該程序可以通路的最大實體位址是限制位址。
重定位技術有兩種方法:靜态重定位和動态重定位。
靜态重定位
在靜态重定位過程中,作業系統調整一個程序的記憶體位址,以反映它在記憶體中的起始位置。一旦一個程序在記憶體中被配置設定了一個起始位置,它就會在其配置設定的空間内執行。一旦靜态重定位過程完成,作業系統直至其終止之前始終無法再次針對該程序進行重定位。
動态重定位
在動态重定位方法中,硬體将重定位寄存器(基值)添加到編譯器生成的虛拟位址中。重定位寄存器允許轉換為實體記憶體位址。硬體将此記憶體位址與限制寄存器(已配置設定部分中可用的最大值——此記憶體位址必須小于限制)進行比較。如果記憶體位址高于限制,處理器會進行位址陷阱并忽略實體位址。
動态重定位的優點很多。 第一個也是最重要的優點是作業系統可以在必要時輕松移動程序。這帶來了第二個優勢:一個程序具備随着時間的推移而增長的能力,因為它可以很容易地重新定位到更大的記憶體塊。動态重定位由硬體執行并且很簡單——它需要兩個特殊的寄存器、一個簡單的加法和一個簡單的比較運算。