
DOSエクステンダーとは、 DOS上で動作するコンピュータソフトウェアプログラムであり、ホストオペレーティングシステムがリアルモードでしか動作できない場合でも、ソフトウェアをプロテクトモード環境で実行できるようにするものです。
DOSエクステンダーは、DOSのメモリ制限に対処するために、1980年代にIntel 80286プロセッサの登場を受けて開発され(後にIntel 80386で拡張された)、当初はDOSのメモリ制限に対処するために開発されました。
DOSエクステンダーとは、保護モードで実行されるプログラムが基盤となるDOS APIと透過的にインターフェースできるように、DOSを「拡張」するプログラムです。これは、DOSが提供する多くの機能が、メモリの最初の640キロバイト内のメモリ位置を指す16ビットのセグメントアドレスとオフセットアドレスを必要とするためです。しかし、保護モードでは、セグメントレジスタ(現在はセレクタと呼ばれます)を使用して、セグメントの特性を記述するグローバル記述子テーブルのエントリを指す、互換性のないアドレッシング方式が用いられます。この2つのアドレッシング方式は相互に排他的であり、プロセッサは保護モード以外の要求を処理するために、コストのかかるリアルモード(またはV86モード)への切り替えを行う必要があります。
DOSエクステンダーは、環境設定と実行対象プログラムのロードに加えて、(とりわけ)1MBのリアルモードメモリ境界より下に割り当てられたバッファ を維持する変換レイヤーも提供します。これらのバッファは、基盤となるリアルモードオペレーティングシステムとプロテクトモードプログラム間でデータを転送するために使用されます。リアルモード/V86モードとプロテクトモードの切り替えは比較的時間がかかるため、エクステンダーは、多くのリアルモード操作の機能を独自のプロテクトモード環境内で複製することで、切り替え回数を最小限に抑えようとします。DOSはオペレーティングシステムとユーザーレベルソフトウェア間の通信に割り込みを多用するため、DOSエクステンダーは、多くの一般的なハードウェア(リアルタイムクロックやキーボードコントローラなど)およびソフトウェア(DOS自体やマウスAPIなど)の割り込みをインターセプトします。一部のエクステンダーは、ビデオBIOSルーチンなどの他の一般的な割り込み機能も処理します。
基本的に、DOSエクステンダーはミニチュア版のオペレーティングシステムのようなもので、基盤となるオペレーティングシステム自体の機能の多くを処理します。

DOSエクステンダーはPhar Lapによって発明されたと言われているが、プロテクトモードのDOSプログラムを一般市場に普及させたのは、Tenberry Software(旧Rational Systems)の386エクステンダーDOS/4GWだった。Watcomの386クラスプロセッサ用C、C++、Fortranコンパイラに同梱されていたため、 id Softwareのヒット作DoomをはじめとするPCアプリケーションやゲームの定番となった。
当初、メモリを大量に消費するビジネスアプリケーションがDOSエクステンダーの開発を牽引したが、真に注目を集めたのはPCゲームだった。DOSエクステンダーの開発の結果、既存の多様なメモリ管理方法から生じる可能性のある多くの競合を解消し、クライアントプログラムに統一されたインターフェースを提供するために、2つの新しいソフトウェアインターフェースが作成された。
これらのインターフェースの最初のものは仮想制御プログラムインターフェース(VCPI)でしたが、これはWindows 3.0の開発から発展したDOS保護モードインターフェース(DPMI)仕様によってすぐに影を潜めました。 [ 1 ]これらは、拡張プログラムがリアルモードソフトウェアとインターフェースし、メモリを割り当て、割り込みサービスを処理できるAPIを提供しました。また、エクステンダーが保護モードへの切り替えを簡単に設定する方法を提供し、複数の保護モードプログラムが平和的に共存できるようにしました。