オーバーレイ (コンピュータ用語)

オーバーレイ（Overlay）とは、何かの表面を薄く覆うこと（あるいは覆うもの）を意味する。コンピュータの分野での専門用語として、以下のようなものがある。
 プログラミング 
（:en:Overlay (programming)）

使用可能なアドレス空間以上の大きさのプログラムを動作可能にするプログラミング手法である。

オーバーレイでは、コードも、ある時点で必要なコードのみをアドレス空間上に置く。他のコードが必要になったら、それまで別のコードが置かれていたメモリ上の領域に必要なコードをロードして使用する。

仮想記憶をサポートする以前のコンピュータシステムでは、このような手法で実装している主記憶装置の容量以上の大きさのプログラムを実行した。オーバーレイは仮想記憶と違って透過的ではなく、プログラマが明示的に指定してやる必要があった。

CPUのアドレス空間上の主記憶と、外部の二次記憶で構成した方式が一般的だが、過渡期に設計された機材など、アドレス空間が狭く、バンク切り換え等の方式の主記憶を切り替えながら実行するといった方式のオーバーレイもある。

制御システムに使用された16ビットのミニコンピュータでは、仮想アドレス空間そのものが限られていることと、仮想記憶機構による実行中のページ入れ替えによる遅延を避けるため、オーバーレイによって全プログラムを物理メモリにロードして切り替えながら実行するという手法が採られることもあった。

オーバーレイのためのリロケーションとリンクのアルゴリズムは特殊であり、非常に複雑なオーバーレイ構造を構成することもある。利用可能な物理メモリ容量およびアドレス空間の拡大、なにより仮想記憶の一般化によって、オーバーレイ方式は使われなくなってきた。

 exec システムコール 

オペレーティングシステムでは、新しくプログラムを起動する時に、同時にそれを実行するプロセスを新規に作る、という方式を採ると、起動元との資源の共有などが煩雑になる、という問題がある。

そこで、まず元のプロセスとほとんどの資源を共有したクローンのような新しいプロセスを作り、次に新しいプロセスが実行するプログラムを、実行したいプログラムに入れ替える、という2段階に分ける、という方式がある。この2段目の入れ替えは、前節のオーバーレイとほぼ同じものであるため、そのように呼ばれる（ことがある）。

Unixでは、fork()システムコールで動作中プロセスの子プロセスとしてプロセスをクローンし、exec()システムコールでそこに新たなプログラムをオーバーレイする。

 オーバーレイ・ネットワーク 

コンピュータネットワークの下層のトポロジーとは関係なく構築された上層のネットワークをオーバーレイ・ネットワークと呼ぶ。例えば、IPネットワークのトポロジーとは無関係に構築されたP2Pネットワークなどを指す。

 その他 
以下は、ほぼ一般的な語としての「オーバーレイ」の用例である。

 オーバーレイ表示 
画像データやビデオ信号を重ね合わせて表示することをオーバーレイ表示と呼ぶ。特にテレビなどのビデオ出力をアナログ信号として合成してコンピュータディスプレイに表示することをビデオオーバーレイと呼ぶ。また、画像処理ソフトや描画ソフトで複数のレイヤーを重ね合わせることもオーバーレイ表示と呼ぶ。

スペースインベーダーゲームでモノクロ画面をカラーに見せかけるために色付きセロファンを画面に貼り付けていたが、これも物理的なオーバーレイ表示の一種である。

 フォームオーバーレイ 
フォームオーバーレイとは、定型文書印刷の用語で、文書の定型部分を独立させプリンターやプリントサーバに格納したものである。使用頻度の高い文書形式を格納しておくことで、データ転送時間を短縮すると共に、データベースから多量の定型文書を自動的に作成して印刷するのにも使用される。

 オーバーレイシート 
タブレット表面に重ねる透明なシートをオーバーレイシートと呼ぶ。下に写真や絵を挟んでトレースするのにも使われる。また、電卓状のキーボードにちょうど嵌るように穴のあいたシートもオーバーレイシートと呼ぶ。こちらはアプリケーションソフトウェアに応じてキーに設定された機能を分かり易くするためのもので、キーの穴毎に機能を説明した文字列が印字されている。

 関連項目 
 仮想記憶
 ページング方式

Category:オペレーティングシステムの仕組み
Category:プログラミング
Category:DTP