オーバーレイ (コンピュータ用語)
(en:Overlay (programming))
使用可能なアドレス空間以上の大きさのプログラムを動作可能にするプログラミング手法である。
オーバーレイでは、コードも、ある時点で必要なコードのみをアドレス空間上に置く。他のコードが必要になったら、それまで別のコードが置かれていたメモリ上の領域に必要なコードをロードして使用する。
仮想記憶をサポートする以前のコンピュータシステムでは、このような手法で実装している主記憶装置の容量以上の大きさのプログラムを実行した。オーバーレイは仮想記憶と違って透過的ではなく、プログラマが明示的に指定してやる必要があった。
CPUのアドレス空間上の主記憶と、外部の二次記憶で構成した方式が一般的だが、過渡期に設計された機材など、アドレス空間が狭く、バンク切り換え等の方式の主記憶を切り替えながら実行するといった方式のオーバーレイもある。
制御システムに使用された16ビットのミニコンピュータでは、仮想アドレス空間そのものが限られていることと、仮想記憶機構による実行中のページ入れ替えによる遅延を避けるため、オーバーレイによって全プログラムを物理メモリにロードして切り替えながら実行するという手法が採られることもあった。
オーバーレイのためのリロケーションとリンクのアルゴリズムは特殊であり、非常に複雑なオーバーレイ構造を構成することもある。利用可能な物理メモリ容量およびアドレス空間の拡大、なにより仮想記憶の一般化によって、オーバーレイ方式は使われなくなってきた。