Domain/OS
Domain/OS(ドメインオーエス)アポロコンピュータ社 (Apollo Computer, Inc.)製のワークステーション、Apollo DOMAINシリーズに搭載していた分散オペレーティングシステム。Apollo DOMAINシリーズには、CRT表示インターフェースボードありのDNシリーズ、CRT表示インタフェースボードなしのDSPシリーズが存在した。
また、従来はAEGISがオペレーティングシステムとして搭載されていたが、DN-10000・DSP-10000など、マルチプロセッサ構成のコンピュータをリリースにあたり、これまでのオペレーティングシステムの設計を見直し、再設計されたオペレーティングシステムがDomain/OSである。分散オペレーティングシステムの機能は、AEGISから受け継いだものである。
当時としては桁外れの先進機能を備えていたが、ヒューレット・パッカード社 (HP) に吸収され消滅した。
DOMAIN/OSは当時のワークステーション業界においてプログラム編集開発環境、ネットワーク技術分散技術、グラフィック技術において世界で最も進んでいたOSである。その技術の一部をOpen Software Foundation (OSF) へ提供し、さらにHP-UXへ機能移植行う数年がかりの計画を発表したが、UNIXとのあまりの機能格差が大きすぎたため途中で断念した。
理想を言えば既にマイクロカーネル化を実現していたDomain/OSカーネルに他のUNIX同様、HP-UXを4つ目のOSミドルウェアとして搭載する手法が妥当であったが、吸収された手前行われなかった。
分散オペレーティングシステムとは、ネットワークで接続された複数のコンピュータを、一つの大きなシステムと捉えて管理するオペレーティングシステムのことである。DOMAIN/OSは、AEGIS同様に分散処理の管理機能を備えており、さらに分散ファイルシステムも搭載していた。
ここでDOMAINとは、“Distributed Operating Multi Access Interactive Network" の略である。
DOMAIN/OSは複数のワークステーションやサーバをネットワークで接続し、以下の環境を実現することを目指した、OSである。
メインフレームで実行するような大きなアプリケーションの実行。
コンピュータ自身を使用者が直接利用できる。タイムシェアリングシステムとの決別。
ネットワークによる共同作業と資源の共有。
ネットワーク全体を1つのコンピュータと捉える管理機構。
複数の環境を利用できることで、使いやすい環境をユーザーに提供するため、AEGIS,UNIX同時動作、ディスプレイマネージャとX Window System(以下X)の共存。
マルチプロセッサ対応を柔軟にし、複数のOS環境を取込むためのマイクロカーネル。
DOMAIN/OSとともにリリースされたシリーズDN10000/DPS10000はマルチプロセッサ構成である。
DN10000/DPS10000はRISCプロセッサApollo PRISMを4つまで搭載可能であった。
DOMAIN/OSマイクロカーネルの上位にAEGISと当時の2つのUNIX (4.3BSD, SystemV 5.3) を搭載し、同時独立動作したものである。ウィンドウシステムを含め以下の全体をDomain/OSと呼ぶ。
DOMAIN/OSリリース当初はディスプレイマネージャのみでXは搭載していなかったが、SR10.2にバージョンアップ時、標準的に搭載するようになった。
当時のXは、他のUnix環境も取り込むだけのために搭載された経緯が大きく、現在のウィンドウマネージャが搭載されていなかった(現在でもXのウィンドウマネージャの機能を停止させれば似た環境になる)。また、ハードウェア面でもX用のアクセラレータを行っていなかったため非常に遅いという問題を抱えていた。
サン・マイクロシステムズ (SUN) を除く他社では、Xのみがウィンドウシステムであったため、Xの高速化としてX用のアクセラレータを搭載するなどを行っていた。
Apollo社独自のウィンドウシステムに比重を置いていたことと、ディスプレイマネージャが非常に軽いウインドウシステムであったため搭載されることはなかった。その後、別売りでHP-VUE(Motif (GUI) ベースのウィンドウマネージャー)が売られるようになり、Xもある程度まともに操作できる環境は整ったが、起動が遅いこと、別売り(高価)である問題が解決できていなかったこともあり、Xを動作条件するもの以外わざわざXを使用することは少なかった。
結局、Xの動作環境を改善することなくDOMAIN/OSのリリースは終了した。
なお、HP社内ではXにディスプレイマネージャ環境を移植したソフトウェアDMX (HP-UX)、ディスプレイマネージャとXを独立動作させるワークスペース切替など、いろいろと試みがあったようだが、リリースされることはなかった。
AEGISの時はモノリシックカーネルであった。その上にディスプレイマネージャが搭載されていた。
UNIXについては標準ではなく別売りの追加機能としてDOMAIN/IXという名称でUNIX (4.2BSD, UNIX System V) の機能をライブラリレベルで提供していた。
Domain/OSに移行の際、AEGISのモノリシックカーネルの機能分離を行いマイクロカーネル化(Domain/OSカーネル)を行った。さらにAEGISソースコードはUNIXに合わせ、PascalからC言語に置き換えを行った。AEGISの高度な機能部分をミドルウェア化を行い、同時にUNIX (4.3BSD, UNIX System V Release 3) をミドルウェア化を行うことで、Domain/OSが完成した。PascalからC言語への置き換えの影響でOSのにてアルファベットの大文字、小文字を区別するようになった。
マイクロカーネル化したDomain/OSカーネルのSPI (System Programming Interface) は公開されていなかった。
また、将来Domain/OSカーネルをMach (Multiple Asynchronously Communication Hosts) カーネルに置き換える予定も存在したが、リリースすることなかった。
なお、Machへの置換えは、当時の流れとDOMAIN/OSカーネルの構造考えたとき、マルチプロセッサ化をより容易に行うことを目的としていた。さらに、メモリオブジェクトをネットワーク分散システム拡張することで理論上DOMAIN/OSカーネルの必要最低限の機能を実現できると言う憶測であったが、Machの完成度がまだ低かったため検討・計画のみ行われたが、HP社に吸収されたことで終了した。
DOMAIN/OSのルーツを知るには前OSのAEGIS(エイジス)のルーツを知る必要がある。
AEGISは、ハネウェル社出身のウェリアム・ポドゥカスとプライム・コンピューターから移籍したスタッフとの共同で作られたOSである。アポロコンピュータ社独自のOSであるが、ハネウェル社MulticsとPrimeOSの良い機能を吸収し、拡張・改善して再設計された先進的機能を備えるOSである。AEGISは一貫性のあるコマンド体系や分散ファイルシステム、シングルレベルストア、ダイナミックリンキングなどの先進機能を搭載しているが、UNIXのルーツ (Multics) と関係をもち、また影響を受けたOSでもある。
上記の流れで完成されたAEGISであったが時代の流れとともにUNIXの影響を無視できなくなり、AEGIS SR9.5よりDOMAIN/IXと言う名称でUNIX環境(UNIX SystemV、BSD4.2の両方)をライブラリレベルで提供した。
AEGISが優れた点は、世界初の分散環境OSであり分散ファイルシステムを実装していたことである。
1981年にリリースされたDN100という機種は、以下の仕様のハードウェアに分散OSを実現した。
MPU :MC68000
MMU :MC68000 (MMUがなかったので仮想記憶管理用プロセッサとしてMC68000を2個搭載していた)
主記憶 :3.5MB
HDD :30MB
LAN :Apolloトークンリング (12Mbps)
CRT :1024×800
独自にならざるを得なかったのは、ネットワーク環境が現在とは違いTCP/IP(当時仕様策定中)が実装された状態ではないためXNS (Xerox Network Systems) を手本としこの分散環境を実現したためである。
ただし、この上で実現した分散ファイルシステムはパフォーマンスが高く、100台以上接続してもパフォーマンスがほとんど落ちない優れものであった(この時代としては驚異であった)。
なぜTCP/IPが利用されなかったかは以下の時代背景(簡略版)にある。
1974年、TCPとIP発表と論文で「インターネット」という言葉が登場
1976年、Unix to Unix Copy Protocol (UUCP) 発表
1979年、ネットニュース (USENET) 登場
1980年、アポロコンピュータ社創立
1981年、アポロコンピュータ社が世界最初のEWSとしてDN100を出荷。4.1BSDリリース。
1982年、ARPAnetがTCPとIPを採用し、TCP/IP仕様がほぼ決まった。サンマイクロシステムズ社創立。AT&T社UNIX System IIIリリース。
1983年、4.2BSDリリースこのときTCP/IPが標準実装された。サンマイクロシステムズ社が一般向けにTCP/IPが標準実装されたUNIXを提供 (SunOS 1.0)
1984年、サンマイクロシステムズ社がNFSを業界にフリーでライセンスする
1985年、SunOS 2.0がNFSを実装
1986年、アポロコンピュータ社がNCS (Network Computing System) 発表。カーネギーメロン大学がAFSを開発。
APOLLO DOMAINシリーズはリリースが時期尚早すぎたため、分散ファイルシステムをIPベースに実装できなかったのである。
年表上最初のEWSとしているが、それ以前にワークステーションおよび現在のPCの原型と言える機種は存在した。
それは、1974年に開発されたゼロックス社のAltoである。エンジェルバートが発明したマウスを使用し、世界初のビットマップ・ディスプレイ、世界初のイーサネット、世界初のレーザプリンタが接続されていた(その当時はEWSと言う区分けはなかった)。
ちなみに、ゼロックスのパロアルト研究所PARC (Palo Alto Research Center) は、「マウス」、「アイコン」、「グラフィカルユーザインターフェース (GUI)」、「ウインドウシステム」、「イーサネット」、「レーザープリンター」、「PostScript」などを開発している。
なお、分散OSおよび分散ファイルシステムではAEGISが世界初のOSである。
Apollo社はApple社とのパートナーシップを結んでいた。Domain/OS を実行するワークステーション系列に Mac デスクトップを移植する作業を行っていたが、スティーブ・ジョブズ (Steven Paul Jobs) がApple社を離れると、後任のジャン=ルイ・ガセー(Jean-Louis Gassée)によりこの契約を解除された。この開発に投資していたApollo社にとっては大打撃となった。
AEGISでもUNIXでも両方混在でも利用できた。
AEGISシェルでもUNIX系シェルのBourne Shell、C Shell、KornShellでもどちらでも操作しやすい環境が使用可能であった。
UNIX環境との大きな違いは、AEGISコマンド自身がネットワーク分散環境用に設計されたため、ネットワーク全体の機器の稼動状況の監視(プロセス実行状態・負荷、ディスク容量、ファイル操作、ネットワークなど)が秀でていた。コマンド体系も整理され、一貫性があり高機能だが判りやすいコマンドであった。シェルスクリプトの機能もUNIXシェルを上回る機能を搭載していた。
当時の2つのUNIX環境 (4.3BSD, SystemV 5.3) がそのまま動作した。過去も現在もそうだが、同時に2つの環境を同時に独立動作できたのは、このDomain/OSのみである。他のワークステーションはどちらか1つしか実装せず、メーカ独自の付加機能を追加する程度であった。それには理由があり、商用OSでマイクロカーネルを開発・実装したのは当時Domain/OSのみであったためである。その後、オムロン社がMachマイクロカーネルを実装し上位にUNIX BSDをミドルウェア化したOSを発表したが、他のOSをミドルウェア化しなかったため、上記のように複数の環境を同時に動かすことはできなかった。
開発にはプログラム編集機能が重要となる。Domain/OSでは、ウィンドウシステムに標準的に搭載されていた、EDITウィンドウを利用することが普通であった。UNIXコマンドにviやADUSライブラリにEmacsなどがあったが、機能・編集能力で遙かに劣るため他のUNIXマシンしか知識がないもの以外は、そのままEDITウィンドウの機能を利用した。なおADUSとはApollo Domain USers group(アポロドメインユーザ会)のことである。
アポロコンピューター社はコンパイラ製作にも非常に優れていた。当時、演算プロセッサの利用もソース対応でなく、コンパイラのオプション設定だけで利用できる優れものであった。GNUコンパイラも存在したが、ほとんど利用されることはなかった。
今では当たり前にできるOSもあるが、当時のUNIXおよびPCの世界では夢の機能であった。Domain/OSでは標準的に搭載しており、コマンド (INLIB) でプロセス内のメモリに配置可能でそのライブラリを必要とする実行ファイルを起動するとライブラリをリンクしなくても利用することができた。もちろんライブラリをリンクすることもできる。
DDE (Distributed Debugging Environment)
分散デバッグ環境、といわれプロセス名がわかればリモートで実行しているプログラムをダイレクトにデバッグできてしまう、現在でも実現できるソフトはないと思われる機能を搭載したソースレベルデバッガ。
プログラムのバグ等で停止した際、どこで停止したかトレースバックが可能であった。また、動作中のプロセスもリアルタイムにトレースバックすることができた。
UNIX系でのコアダンプ解析をすることなく、トーレースバック表示でルーチン名と行数がはっきりわかるため、問題解決は非常に早かった。
dspst (display process status graphically)
各プロセスの負荷状態と、OS内プロセス負荷状態(LEVEL1プロセス)、I/O 統計(ディスク、ネットワーク、ローカルマウントページング、ネットワークデマウントページング)をリアルタイム表示する。
hpc (program counter histogram)
各ルーチンでどれだけ処理にかかっているかを解析し、テキストの棒グラフで表示を行うツール
Domain Performance Analysis Kitのひとつで動作中のプログラムの動きを表示し、プログラムの流れをサブルーチンコールのチャートで表現できる。これは、現在のソフトウェアでも珍しい機能である。
lvolfs (list_volume_free_space)
論理ボリュームの使用可能な領域のサイズを表示する。これはUNIXではdfコマンドである。違いは、接続されているネットワーク全体の詳細を事細かに表示することである。自分の機器のディスク容量が足りなければ他の接続機器で余裕がある機器に全部移動してしまうことができた。アクセス方法も簡単で、ネットワークワイドにシンボリックリンクを作ることで移動後も以前と変わらない動作環境を実現した。
Domain/OSはネットワーク透過で完全な分散環境を実現していた。Domain/OSの能力は1台では出し切ることができない。複数台接続して初めて、その真価を発揮するOSであった。具体的には、自分で使用している機器以外にネットワーク接続された機器にもログインし、自分で使用している機器を参照させてコンパイルするなど、接続された機器を自由に制御できた。自分の機器に欲しい周辺機器がなくても、ネットワーク上の機器で搭載または接続されていれば自由に使用でき、ソフトウェアも同様にネットワーク上の機器でインストールされていれば利用できた。現在のコンピュータOSも進歩したがここまでの自由度はない。
なお、台数増加で演算能力の相乗効果を生むものとして、NCS (Network Computing System) が搭載されていた。
従来のディスプレイマネージャとXを同時に動作させることができた。ここではディスプレイマネージャについて説明する。
どのようなアカウントでログインしたユーザーでもDM入力ウィンドウのコマンド(DMコマンド)により、ログイン、ログアウト、システムシャットダウンが行えた。なお、システムシャットダウンは行えないように設定することも可能である。AEGISには、システムをシャットダウンするコマンドは用意されていない。ただし、DMコマンドをShellから起動する方法を除く。それは、初めからウィンドウシステムで操作することから設計されたシステムだからである。なお、一緒に搭載しているUNIXコマンドにはhalt、shutdown、rebootなどのシェルコマンドが用意されている。DOMAIN/OSをサーバシステムで利用した場合、サーバをシャットダウンする方法として、shutspmコマンドが用意されている。ウィンドウシステム終了は、ウィンドウシステムのみ終了してPhaseIIShellに移行する特殊なモードである。
AEGIS Shell、Bourne Shell、C Shell、KornShellなどのコマンドライン・インタプリタ環境を提供
トランススクリプトパッドは、仮想端末機能を有するウィンドウで以下の特徴をもつ。
入力領域をホールド機能で固定すると、やはりコマンドラインが編集パットと同等に操作でき、他のウィンドウの文字列なのカット&ペーストが可能である。
トランススクリプトはさらに操作+操作結果履歴が画面の中で遡ることができる。(ドライブの容量の許す限り)
トランススクリプトの履歴は、読込み専用状態でオープンしたエディタと同じで、その出力内容をエディタへコピー&ペーストするなどの操作ができた。
編集パッド (Edit Pad)
テキストファイルエディットをサポートするウィンドウである。このため、DOMAIN/OSユーザは、UNIX特有のviやEmacs等の端末に縛られるエディタ操作を知らなくてもファイル編集を簡単に行えた。編集機能は現在のEmEditorや秀丸エディタ級の能力を搭載していた。編集パットは起動するときの命令(DMコマンド)により、編集モードと読取り専用モードで起動できた。またその状態の切替えも同様にDMコマンドで行えた。
DMコマンドというウィンドウ制御用のコマンドも用意されており、ウィンドウ制御、ペーストバッファ制御、テキスト入力制御、検索、置換え、キー定義制御、プロセス生成制御などが行えた。利用方法は、DM入力ウィンドウかキー定義を行うことが一般的方法である。
ペーストバッファを100個まで持つことができ、DMコマンドを使用して利用する。よってキー定義しだいで複数の内容をペーストバッファーに格納/取り出しが行う環境をユーザが設定可能であった。DOMAIN/OSのかな漢字変換機能はこの機能を利用し、変換したい文字をマークさせペーストバッファに転送し、その文字列を変換し再度、ペーストしなおすことで実現していた。
DOMAIN/OSシリーズは、キーボードとマウスを自由にキー定義でき、キー定義はDMコマンド・スクリプトを使用する。スクリプトの利点で動的にキー定義の内容も変更できるため、ユーザーにとって便利な環境にプログラム可能であった。
ディスプレイマネージャは、トランススクリプトパッド、編集パット、DM入力ウィンドウ、DM出力ウィンドウの4つのウィンドウが存在する。どれも共通の操作でカット&ペースト、テキスト入力制御、検索、置換えが行える。
分散ファイルシステムとは、複数のコンピュータのファイルシステムを1つに統合して利用者に提供する(透過的にアクセス可能とする)ファイルシステムである。
DOMAIN/OSは、分散ファイルシステムを提供している。Unix系のファイルシステムにあるルート / をさらに拡張した「ネットワークルート」という概念があり、// でアクセスする。(参考として、マイクロソフトが提案していたCIFS(Server Message Blockの記事を参照)、カーネギーメロン大学のAndrew File Systemやその後継のCodaといった分散ファイルシステムがある)
「商用OS」や「標準的のOSの機能として実装」という言葉の定義にもよるが、分散ファイルシステムを商用OSとして標準的のOSの機能として実装していたのはApollo DOMAINシリーズのみである、とする主張もある。
他OSではこの機能を実装していない、として、分散オペレーティングシステムというミドルウェアとなっているの現状、とする主張もある。
その理由として、Apollo DOMAINシリーズは、この機能の実現する独自プロトコルDDSをカーネルレベルで実装し、更にファイルシステム内のUID管理にノードIDを識別情報として記録されているためだとする。そのためApollo DOMAINシリーズ独自ではあったが、最初から分散ファイルシステムの設計施されていた。そのため当時の非力なマシンで高いパフォーマンスを実現できたと主張される。
他OSでは後付システムであるため、「分散処理のための基本ソフト」または、「ミドルウェア」と言う扱いだと主張される。
(他にも「商用OS」で、たとえばQNXにもネットワークルートがあるが、QNXはカーネルがマイクロカーネルのためカーネル外のサーバで実装されており、「カーネルレベル」ではないということであろう)
ネットワーク上につながれたフォルダ(ディレクトリ)を共有する機能を「ネットワークファイル共有機能」という。なお、これは分散ファイルシステムではない。DOMAIN/OSは、DOMAIN/OSやAEGISなどの同系列のOSとは、分散ファイルシステムの機能が利用できるため、この機能は不要である。しかし他のOSとはそういかないので、DOMAIN/OSではNFS (Network File System) を搭載することで、異機種間ファイル共有を実現していた。当時、ファイル共有では1984年に発表したサンマイクロシステムズ社のNFS、1987年に発表されたAT&T社のRFS (Remote File System) が有名であった。そのうち異機種間ファイル共有はNFSのみであったそのため各社NFSを搭載した。AEGISが実現していた分散ファイルシステムが普及しない理由は、ベースに使用したプロトコルがXNS (Xerox Network Systems) の派生で独自プロトコルであったことと、分散ファイルシステムではオブジェクト(ファイル,ディレクトリ,リンク,etc...等)をネットワーク上一義的識別機能が必要となるため全オブジェクトの一義的識別子 (UID) にノードID(Apollo Domainシリーズ独自のホスト識別IDでPROMで提供され同じ番号はない)をなかに埋め込んでいた。
他のコンピュータでは、分散OSとしての設計はないためこの概念を搭載することは困難であったため実装できなかった。これがApollo独自の分散ファイルシステムの特徴でもあり、非常に高速な処理を実現していた。
SMB File Sharing (Common Internet File System)
SMB (Server Message Block) を利用した、マイクロソフト社ファイル共有機能は標準的実装ではなくUNIXのPDSでDOMAIN/OSがサポートされていた。
Domain/OSでは、ネットワークルートに登録される名前をノード名と呼んだ。NetBIOSではコンピュータ名が該当する。また、NetBIOSでは、コンピュータ名が1つしか割り当てできないが、Domain/OSはノードのカタログという方法で、1つの機器に複数のノード名と登録することで別名の利用が可能であった。
AEGIS時代は “Backslash"(バックスラッシュ)で示していたがUNIX互換にするため、“.." (ピリオド2個)に変更された。ディレクトリ階層の区切りは当初より “/" である。
複数のOSが同時に使用可能にするための仕組みとしてDomain/OSではシンボリックリンクの機能に環境変数を適用できた。そのため、2つのバッティングするディレクトリ (/bin, /etc, /usr) など環境変数を使用しシェルごとにまったく別のUNIX環境を実現可能にしていた。実例として、以下のような環境変数リンクを利用し、UNIXの2つのディストリビューションを同時混在させて利用されていた。
環境変数SYSTYPE(設定値bsd4.3またはsys5.3)をプロセスウィンドウで動かすShell毎に選択可能なため、同時独立に複数の環境が実現されていた。
DOMAIN/OSではネットワーク上のすべてのファイルをオブジェクトとして抽象化を行い管理する。このオブジェクト管理機構をOSS (Object Storage System) と呼んだ。DOMAIN/OSのオブジェクトはUID (Unique Identifier) という64ビットのネットワークワイド一義的識別子で管理される。
レジストリデーモンというネットワーク分散技術を使用したアカウント管理を実現していた。ここで使用されたネットワーク分散技術(当時NCS (Network Computing System) と呼ばれた)は、その後、OMGのCORBAおよびMicrosoft DCOMの基となった技術である。
Domain/OSのアカウントはネットワーク全体を管理するネットワークレジストリとその機器のみのアカウントを管理するローカルレジストリが存在した。優先されるのはネットワークレジストリで、ネットワークレジストリにアクセスできない場合、ローカルレジストリが存在する。ログインする機器がネットワーク接続できないトラブルが発生してもローカルレジストリがカバーする仕組みである。これらの管理要素は、「オーナー」、「グループ」、「組織」という要素にパスワードをつける形式であった。
もともとUNIXより大きな枠組みがAEGISころから存在したのでそのまま機能を拡張していない。
スーパーユーザーはUNIXと同様rootが存在し、さらに、locksmithというスーパーユーザーグループが存在した。locksmithはUNIXには無い概念だが、WindowsのAdministratorsに相当する。
組織については特別なものは登録されていない。
Domain/OSには、他のUNIX機器とアカウント統合で互換性をもつためYP(Yellow Page、現在のNIS (Network Information Service))も存在した。ただし、DOMAIN/OSで同士では利用しない。
シェルはAEGIS用にAEGISシェル、UNIX用にBourne Shell、C Shell、KornShellの環境が用意されていた。ユーザーはその中で使いやすい環境を選択できた。また、同時に複数種類の環境を走らせることも可能であった。
DOMAIN/OSとAEGISは、ネットワーク上すべてのファイルはオブジェクトとして管理される。これをOSS (Object Storage System) といい、ファイル等のオブジェクトをUID (Unique Identifier) という一義的識別子で管理する。