Domain/OS
UIDは64ビットで構成され、以下のフォーマットである。UIDにノードIDが入ることでネットワーク全体を1つのオブジェクトとして容易管理することができた。また、64ビットと短いため、このUID利用したハードリンクなどはネットワークを越えて行うことを容易にした。また、同時にこれがAPOLLO/DOMAINシリーズの独自性を生む原因でもあった。
DOMAIN/OSは1024バイトを1ページとして分割し、ディスクブロックに格納する。よってDOMAIN/OSのディスクの1ブロックは1024バイトになっている。
オブジェクトはUIDで管理されるが、OSSで管理される各マネージャー群で管理するのに使用される。しかし実際にオブジェクトをユーザーが操作する際はパス名で管理される。そこでUIDとパス名を関連付けるネーミング・サーバが存在する。ネーミングサーバは、ネットワークルートを管理するネーミング・サーバ・ヘルパー (NS_HELPER) とディレクトリマネージャのモジュールから構成される。パスネーム-UIDの変換、ディレクトリ管理、ネットワークルートの管理を行う。
Domain/OSの特徴と言え、大きな利便性を発揮する裏方の機能としてネットワークワイドシングルレベルストアがある。
OSメモリ管理システムは、大きく分けると以下の種類がある。
下記のように2段階のストレージ階層化が行われており、
ダブルレベル実ストアは、メインメモリのみがプライマリストレージとなっているものをいう。
プログラムの実行には、ファイルシステムにあるプログラムを、一度メモリイメージにし、プライマリストレージにコピーを行うことによって実行可能となる。
さらに、プライマリストレージが、メインメモリのみのため、メインメモリがプログラムの最大実行サイズとなる。
MS-DOS等一昔前のPC-OSがこの方式をとっている。
下記のように2段階のストレージ階層化が行われており、
ダブルレベル仮想ストアは、メインメモリと、DISKのスワップエリアがプライマリストレージとなっているものをいう。
プログラムの実行には、ファイルシステムにあるプログラムを、一度メモリイメージにし、プライマリストレージにコピーを行うことによって実行可能となる。
さらに、プライマリストレージが、メインメモリ+スワップエリアがプログラムの最大実行サイズとなる。
UNIXやLinux等はこの方式を採用しており、起動を高速化するため、Stickyパーミッションが、存在する。
これは、プログラムのメモリイメージを、プライマリストレージに転送するフラグである。
この方式では、ストレージ階層化を行わない。
プライマリストレージは、プライマリストレージが、メインメモリ+ディスクのフリースペースとなる。
そのため、プライマリストレージは可変長記憶システムとなっている。つまり、実行状況で変化する。
ファイルシステムには、その場所を示す「特別なアドレス」が割り当てられる。
特別なアドレスは、OSにより表現が違うのみで機能的に同一である。
プログラムの実行には、プライマリストレージに、「特別なアドレス」をマップすることで実行される。
このため、プライマリストレージへの転送がないため、実行が高速である。
さらに、スワップエリアを専用で持つ必要がない。
なお、「特別なアドレス」の範囲が機器単体で管理される範囲としている。
Multics (Multiplexed Information and Computing Service) やIBM System/38,AS/400等ではこの方式を採用している。
基本的に、シングルレベルストアと同じ方式で実行される。
違いは「特別なアドレス」は、オブジェクトアドレス空間と言い、ネットワーク全体を含む96ビットの巨大なアドレス空間をあつかう。
このため、Domain/OSでは、特別な手続きなしに、ネットワーク接続されたすべての機器にあるプログラムを直接実行が可能である。
これにより、ネットワーク全体を1システムととらえ、プログラムリソースを分散できるという強みを持っている。
また、この機能をサポートするため、ネットワークワイド・デマウントページングをサポートしている。
なお、UNIXもOSF(Open software Foundation = IBM, HP, DEC, Apolloによって設立された分散コンピューティング技術の普及を目的として設立された非営利の業界団体)のOS再構築にて、シングルレベルストアへ移行することを計画した。
ただし、実際の製品ではそこまでの改変されていなかった。
一般にUNIXやLinuxはページングという処理でスワップエリア(スワップ用パーティション)へページアウトを行う。
DOMAIN/OS,AEGISはこのようなスワップ用パーティションをもたない。その代わり、ページアウトをディスクのフリーエリアに置く。すなわちDOMAIN/OSおよびAEGISの実行できる最大の領域はそのディスクのフリースペースが仮想エリアサイズである。なお、論理的に実行できる仮想エリアサイズは機種ごとに違い、その機種の仮想アドレス空間サイズが実行可能な論理的サイズである。これは、ハードウェアの進歩とともに変更されるべきものとして扱われていたためである。
仮想アドレスレイアウトは以下のようになっている。
DOMAIN/OSはすべてのオブジェクトを96ビットで表現されるオブジェクトアドレス空間で管理されている。このアドレスは、ネットワークワイドに広がるオブジェクトをページ単位(オフセットも含む)でとり扱える。DOMAIN/OSで管理されているアドレス空間のひとつ。
仮想アドレスは実行時オブジェクトアドレスとのマッピングを行う際に使用される。このアドレス空間は機種によって異なる、それはハードウェアの進歩に応じて変更されている。構成要素は「リージョンインデックス」,「セグメントインデックス」,「ページインデックス」,「バイトオフセット」からなる。DOMAIN/OSで管理されているアドレス空間のひとつ。
ノード内でのメインメモリのアドレス。DOMAIN/OSで管理されているアドレス空間のひとつ。
ノードで使用されるディスクのアドレス。DOMAIN/OSで管理されているアドレス空間のひとつ。
マッピングは、プログラム実行時にオブジェクトアドレスと仮想アドレスの対応付けを行う行為である。
これにより、プログラム実行時にメモリにプログラムプログラム転送を行うのではなくオブジェクトアクセス時にでマウントページング行いページインを行なえるようにする。またこの機能により、利用者はネットワーク中に存在するプログラムやファイルを容易に共有することができる。
このマッピング処理はMST (Mapped Segment Table) マネージャが行う。MSTマネージャは以下の情報をもち仮想アドレスと、オブジェクトアドレスをマッピングする。
ページング処理については、ダブルレベル仮想ストアやシングルレベルストアと同じ条件で行われている。
大きな違いは、ネットワークワイドシングルレベルストアであるため、自ノード以外のリモートノードからマッピングを行うことがある。
そのため、ネットワークワイドにデマントページング処理を行う必要がある。
上記機能を実現するため、2つのネット・ページジング・サーバが動作しており、ローカル用とリモート用が動作している。
マッピングされるオブジェクトアドレスには、ノードID情報が含まれており、この値で、自ノードかリモートノードかを判定している。
グラフィックライブラリを搭載していた。
GSR (Graphic Service Routine)
Domain/OSでは最も基礎になるグラフィックサービス。このインターフェースの解説英文のみ存在し、日本語はなかった。Domain/OSで一般的に使われた、グラフィックライブラリ (GPR) の下位ライブラリである。
GPR (Graphic Primitive Resource)
Domain/OSで一般的に使われた、グラフィックライブラリで2次元ビットマップ制御機能を搭載する。
GMR2D (Graphic Metafile Resource 2 Dimension)
高速グラフィック技術のひとつで、描画命令リスト(ディスプレイリストとも言う)をファイル化し、描画制御を行う方式である。なお、この技術は高速グラフィックディスプレイとホストコンピュータが分かれていた頃の高速描画方法を纏めた方式である。
GMR3D (Graphic Metafile Resource 3 Dimension)
上記GMR2Dの3次元バージョン。当時ヒグスという3次元グラフィックの標準規格が検討されて時に、概要モデル参考にアポロコンピュータ独自で完成させたライブラリ。後に他社でもヒグスは搭載されたが、GMR3Dほどの機能・性能は実現されなかった。そしてOSFに技術提供したシリコングラフィックス社のOpenGLが一般的に広がった。
ユーザインターフェース(メニュー、描画領域確保)とプログラムインターフェースを結合させるコンパイラ兼描画ライブラリ。現在のリソースコンパイラに相当する。
Domain/OSはサポート範囲の機種であれば、CPUやハード構成が違ってもディスクレスでブートが可能であった。ハードウェアの違いはSAU[1〜15]というブート用のディレクトリに歴代機種のブート部分が格納されていた。ネットワーク起動用のサーバ(以下netmanという)と、ブートROM内プログラムの機能で、各種の番号(SAU)を交換することでnetmanから適切なブートプログラムが転送されOSをローディングした。OSをローディングし起動段階で仮想記憶を使う必要がでると、ブートプログラムを提供したコンピュータにネットワークページングリクエストを行い、ネットワークワイドにデマウントページングを行う。それによりディスクレス起動を行うことができる。また、ディスクを搭載する機種でもブートROMレベルのコマンド操作(ニーモニックデバッガと言う)でディスクレス起動を行うことができる。
ハードウェア診断に役立つ(起動しなければディスク以外のハードウェア障害と判定)。
ディスクを搭載する機種でこの操作をおこなうと、OSを起動した状態で本体機種の初期化。OSの再インストールが行えた。
当時ハードディスクは高価であったので、ディスクレス起動できるワークステーションは魅力であった。
ネットワークコンピューティングシステムと呼ばれ、複数分散されたのコンピュータ演算能力を利用し、スーパーコンピュータ級の能力を安く実現しようとする技術。
なお、この技術はネットワークに接続されるコンピュータでデータグラム通信サービスと搭載するものであれば実装できるという柔軟な設計であった。分散OS環境を実装するために、このPRCベースで作成するようである。
AEGIS, DOMAIN/OS以外の環境ではDCE (Distributed Computing Environment) がある。
NCS実装条件は、コネクションレスサービスを提供するプロトコルであれば良い。最初に実装しあプロトコルはDDS(Apollo独自通信方式)、UDP/IPを搭載しているものが対象となった。
コンピュータ間インタフェース定義言語としてNIDL (Network Interface Definition Language) が設計された。NIDLでコンパイルされると、クライアント側で使用するクライアントスタブと呼ばれるコードと、サーバ側で使用するサーバスタブと呼ばれるコードを生成する。さらにそれを利用するための、C言語インクルードファイルとPASCAL言語のインクルードファイルが生成された。この技術は、OMGのCORBAおよびMicrosoft DCOMの基となり、この技術を利用を応用したものとして、OSFが開発したDEC分散ファイルシステムなどがある。HP RPCまたはDEC RPCとは、このNCSのRPC技術である。NIDLは、後のIDL (Interface Definition Language) となった。
DSEE (Domain Software Engineering Environment)
DOMAIN ダイアログ
ユーザインターフェースとプログラムインターフェース定義言語で、これは現在のリソースコンパイラの基となった。
NLS (Network License Server)
ネットワーク上のソフトウェアライセンス管理するシステム。すでにネットワーク透過な分散環境であったApollo DOMAINの環境ではネットワーク上に1ソフトウェアがあれば、接続されるすべての機種で同時使用が可能であった。そこでソフトウェアライセンスを守る目的で搭載された機能であった。このネットワークライセンスサーバも現在にも機能的拡張されながら引き継がれている。