RT-11は、
ディジタル・イクイップメント・コーポレーション(DEC)が開発した16ビットコンピュータPDP-11ファミリ向けの、小型シングルユーザー
リアルタイムオペレーティングシステムです。1970年に登場し、
リアルタイムシステム、
プロセス制御、データ取得など、幅広い用途で利用されました。
機能と特徴
マルチタスク
RT-11はプリエンプティブ・
マルチタスクを直接サポートしていませんが、複数のアプリケーションを同時並行的に実行できる機能を備えています。全バージョンで「バックグラウンドジョブ」をサポートし、FB、XM、ZMのバリエーションでは「フォアグラウンドジョブ」も利用可能です。さらに、システム生成時に選択すれば、最大6個の「システムジョブ」を動作させることもできます。これらのタスクは固定優先度を持ち、「バックグラウンドジョブ」が最も低く、「フォアグラウンドジョブ」が最も高い優先度となっています。ユーザーは
コンソールからジョブを切り替えることが可能です。また、システム生成時に単一の「バックグラウンドジョブ」のみを扱うように設定することもできます(SB、XB、ZBバリエーション)。
ソースコード
RT-11は
アセンブリ言語で記述されています。MACRO-11アセンブラの条件付アセンブリ機能とマクロプログラミング機能を活用することで、構成変更の自由度が高められています。通常の機械語にはない高度な命令も使用可能です。OSの配布物には、OSと
デバイスドライバのコメントを除去した
ソースコードが含まれており、ユーザーは「SYSGEN」というプログラムを使って、OSやドライバを自分の構成に合わせてビルド(システム生成)できます。開発者向け文書には、コメント付きの
カーネルリストが含まれていました。
デバイスドライバ
初期バージョンでは、システム生成時に
デバイスドライバを
カーネルに組み込む必要がありましたが、後には個別にロード可能になりました。RT-11はデバイス制御やデータ取得によく使用されたため、
デバイスドライバの開発や改造が頻繁に行われていました。DECはサードパーティによるドライバ開発を支援するために、ハードウェア仕様やOS内部に関する文書を公開していました。ユーザーグループであるDECUSによる開発も積極的に支援していました。
ユーザーインターフェース
RT-11では、通常、
テレタイプ[[端末]]やビデオ
端末からシステムを操作します。
端末とシステムの接続には、当初カレントループやRS-232インターフェースが使われていましたが、後にRS-422も追加されました。VT11やVS60といったグラフィック表示装置もサポートしています。サードパーティ製ではテクトロニクス4010ファミリがよく利用されました。
ユーザーの入力はKMON (Keyboard Monitor) が受け付け、CSI (Command String Interpreter) 形式の各種ユーティリティをコマンドとして実行します。RT-11のコマンド言語には独自の特徴があり、後の
CP/M|CP_Mや
MS-DOSにも影響を与えました。CSI形式では、コマンド名、入力
ファイル名、出力
ファイル名、オプション(RT-11では「スイッチ」と呼ぶ)が特定の順序と構文で記述されます。コマンドラインのスイッチは、
Unix系OSのように「-」ではなく「/」(スラッシュ記号)で区切られます。すべてのコマンドには短縮名があり、例えばRENAMEコマンドはRENとしても実行可能です。
コマンド列に初歩的な制御構造を追加したバッチファイルを処理するバッチプロセッサもあります。バッチファイルの
拡張子は「.BAT」です。後のリリースでは、「.COM」
拡張子を持つコマンドファイルも利用可能になりましたが、これは単純にコマンド列を順に実行するだけです。さらに後には、IND (Indirect Command File Processor) によってより高度な制御構造が可能となりました。この場合、
拡張子が「.CMD」のコントロールファイルを入力として使用します。
「.SAV」という
拡張子のファイルは、
実行ファイルの一種です。これはRT-11のSAVEコマンドがメモリの内容をディスク上のファイルに保存したもので、後でロードすることで実行を再開できます。
SAVEコマンドの他に、KMONに実装された基本コマンドとして、GET、START、REENTER、EXAMINE、DEPOSITなどがあります。一部のコマンドやユーティリティは、後の
CP/M|CP_Mや
MS-DOSに影響を与えました。例えば、DIR、COPY、RENAME、ASSIGN、CLS、DELETE、TYPE、HELPなどです。FORMATコマンドはディスクの物理フォーマットを行いますが、
ファイルシステムの作成はできません。その場合はINITコマンドを使用します(DOSのFORMAT /Qに類似)。ほとんどのコマンドが
ファイル名でのワイルドカード使用をサポートしていました。
物理デバイス名は、「dd{n}:」の形式で指定します。「dd」は2文字のデバイス名、「n」はユニット番号(0から7)です。ユニット番号を省略すると、ユニット0とみなされます。例えば、TT:は
コンソール端末、LP:(またはLP0:)はパラレルラインプリンター、DX0:、DY1:、DL4:はディスクボリュームを示します。論理デバイス名は1文字から3文字の英数字で、物理デバイス名の代わりに使用できます。物理デバイス名と論理デバイス名を結びつけるには、ASSIGNコマンドを使用します。例えば、ASSIGN DL0 ABCとすれば、「DL0:」の代わりに「ABC:」でそのディスクボリュームを参照できます。予約済みの論理名として「DK:」があり、現在のデフォルトデバイスを参照します。ファイル指定時にデバイスが指定されていない場合は、「DK:」にあるファイルとみなされます。予約済みの論理名「SY:」はシステムデバイス(
ブートデバイス)を参照します。
後のバージョンでは、特定のデバイスユニットを最大64個(八進数で0から77)まで指定できるようになりましたが、デバイス名の3文字英数字という制限はそのままです。そこで、SYSGENでの選択により、DUおよびLDデバイスハンドラのみ拡張が適用されるようになりました。その場合、デバイス名の形式は「dnn:」となり、「d」はDUの場合は「D」、LDの場合は「L」となり、「nn」は00から77(八進数)となります。
ソフトウェア
RT-11には、以下の様な様々なユーティリティが付属しています。
ディスクボリューム管理: DIR、DUP、PIP、FORMAT
ファイル作成・編集: TECO、EDIT、KED(VT100用)、K52(VT52用)
実行ファイル作成: MACRO、LINK、LIBR
デバッグ: ODT、VDT、SD
その他、Multicsの文書作成プログラムrunoffを移植したものや、モデムを介して他のコンピュータシステムに接続するVTCOMもありました。
システム全体として、パーソナルコンピュータで行うようなタスクは十分に実行可能でした。ユーザーグループDECUSが多数のRT-11用ソフトウェアを開発しており、
C言語などもDECUSが実装しました。
アセンブリ言語での開発・
デバッグツールはOSの一部として提供されていましたが、C、FORTRAN、
Pascal、いくつかの
BASICといった言語処理系は別製品でした。サードパーティも各種言語処理系を提供していました。RT-11は
DECnetを使ってネットワーク接続することも可能であり、サードパーティがTCP/IPなどのプロトコルを開発しました。
配布媒体とシステム最小構成
RT-11が動作可能な最小構成は、(ハードディスクなし)8インチ250KBFDD2機と56KBのメモリで、8台の
端末を接続できます。パック型
磁気ディスク装置(2.5MBのRK05)や
磁気テープからも
ブート可能です。配布媒体としては、パンチテープ、オープンリール式
磁気テープ、カートリッジ式
磁気テープ、
フロッピーディスクがありました。シングルユーザーの最小構成は、FDD1機と16KBのメモリです。この構成でもスワッピングやオーバーレイを駆使してユーザープログラムを実行できました。例えば、ユーザープログラムの実行中は、キーボードからの入力を扱うユーザーインターフェース部分(KMON)をスワップアウトし、プログラム完了後にスワップインするなどの動作をしていました。
RT-11は、単純で高速な
ファイルシステムを備えています。
ファイル名は本体が6文字、
拡張子が3文字に制限されており、RADIX-50で符号化されるため、9文字が6バイト(16ビットワードで3ワード)に圧縮されます。ファイルはディスク上の連続したブロック(1ブロックは512バイト)に格納されるため、ファイル全体の読み書きが非常に高速です。しかし、ファイルを削除すると
フラグメンテーションが発生し、空き領域があってもファイルを作成できなくなることがあります。そのため、定期的に
ファイルシステムのデ
フラグメンテーション(RT-11では「squeeze」と呼ぶ)を行い、空き領域をまとめる必要がありました。
他のDEC製OSとの互換性
特別な周辺機器を必要としないRT-11用プログラムは、RSTS/EのRT-11 RTS (Run-time system) 上で直接実行できます。また、
RSX-11とVMSにはRTEM(RTエミュレータ)が用意されていました。
DCLがRT-11に実装されたことで、他のDEC製OSとの互換性が向上しました。DCLにはOS独自のコマンドやオプションがありますが、OS間で共通するコマンドやオプションもあります。
互換OS
Fuzzball: インターネットプロトコルのルーティングソフトウェア。RT-11のプログラムを実行可能です。
SHAREplus: HAMMONDsoftwareが販売したRT-11互換OSで、マルチプロセス/マルチユーザー版RT-11です。VMSからアーキテクチャ上のコンセプトを借用しています。他にマルチコンピュータ版のSTARelevenも販売していました。RT-11の
デバイスドライバを別途用意する必要がありました。ネットワークオプションとして、他のPDP-11やVAXの周辺機器に透過的にアクセスできる機能も提供していました。
RSX-11アプリケーションについても限定的な互換性を提供していました。主にヨーロッパで人気がありました。
TSX-Plus: S&H Computer Systemsが開発・販売したマルチユーザー/マルチプロセッシング版RT-11です。ただし、純正のRT-11がないとブートできません。TSX-PlusはRT-11上でユーザープログラムとして起動し、RT-11からシステムの制御を完全に奪って動作します。ユーザー間の完全なメモリ保護、ユーザーアカウント機能、ディスクボリュームのユーザー毎の分離などの機能を提供します。RT-11上のプログラムは多くの場合そのままTSX-Plus上で動作可能ですが、デバイスドライバは若干の修正が必要となる場合がありました。
バージョン
リリース履歴
バリエーション
RT-11には、マルチタスクのサポートレベルが異なる4つのバリエーションがありました。
RT-11SJ (Single Job): 一度に1つのタスクのみ実行可能。最初にリリースされたバージョンです。
RT-11FB (Foreground/Background): 2つのタスクをサポート。フォアグラウンドジョブは優先度が高く、非対話的。バックグラウンドジョブは優先度が低く、対話的です。
RT-11XM (eXtended Memory): 64KB以上のメモリをサポート。ただし、メモリ管理ハードウェアを備えた機種である必要があります。1975年以降にリリースされました。
RT-11ZM: 命令空間とデータ空間の分離をサポート。Unibusベースの11/44, 45, 55, 70, 84, 94 およびQ-busベースの11/53, 73, 83, 93が対応機種です。
特殊バージョン
いくつかのPDP-11ベースの特殊ハードウェアはRT-11を搭載していました。
LAB-11: 研究室などのアナログデータ収集用周辺機器LPS-11を付属したPDP-11です。
PEAK-11: ガスクロマトグラフィーに特化したPDP-11です。RT-11のフォアグラウンドジョブとしてデータ収集機能が動作し、ユーザーが作成した解析プログラムがバックグラウンドジョブとして動作します。
GT4x: VT11ベクターグラフィックス周辺機器を付属したPDP-11です。デモプログラムとしてLunar Landerやスペースウォー!がシステムに付属していました。
GAMMA-11: RT-11とPDP-11/34をパッケージ化した核医学システムです。高速A/Dコンバータ、16ビットカラーグラフィックディスプレイ、シンチグラフィのためのデータ収集・解析・表示アプリケーション開発用ソフトウェアライブラリが含まれています。
ソビエト連邦でのクローン
ソビエト連邦では、以下の様なRT-11クローンが作られました。
RAFOS ("РАФОС") — SM EVM
FOBOS ("ФОБОС") — Electronika 60
FODOS ("ФОДОС")
RUDOS ("РУДОС")
OS DVK ("ОС ДВК") — DVK
OS BK-11 ("ОС ВК-11") — エレクトロニカBKシリーズ
MASTER-11 ("МАСТЕР-11") — DVK
脚注
外部リンク
PDP-11 How-to guide with RT-11 commands reference