| VOSまたはOpenVOS | |
|---|---|
| 開発者 | ストラタス・テクノロジーズ |
| 執筆 | PL/I、C、アセンブリ言語 |
| OSファミリー | Multicsのような |
| 動作状態 | 現在 |
| ソースモデル | 非公開ソース |
| 最新リリース | 19.3.1bx / 2025年5月[ 1 ] |
| 対応プラットフォーム | i860、x86、PA-RISC、68k |
| カーネルタイプ | モノリシックカーネル |
| 影響を受けた | Multics、Unix |
| ライセンス | カーネル: Stratus Technologiesドライバ、ライブラリ、およびユーザーランドプログラム: Stratus Technologies、その他 |
| 公式サイト | ストラタスVOS |
Stratus VOS ( Virtual Operating System 、現在はOpenVOSと改名) は、Stratus Technologies のフォールトトレラントコンピュータ システム上で動作する独自のオペレーティングシステムです。VOS は、Stratus の ftServer および Continuum プラットフォームで利用可能です。 [ 2 ] VOS の顧客は、継続的な可用性を必要とする大量のトランザクション処理アプリケーションをサポートするためにこれを使用しています。VOS は、完全にロックステップハードウェア上で動作する数少ないオペレーティングシステムの 1 つとして注目されています。
1980年代には、IBMブランドのStratus VOSが存在し、System/88オペレーティングシステムと呼ばれていました。[ 3 ]
VOSは、耐障害性ハードウェアに特化した高セキュリティのトランザクション処理環境として、当初から設計されました。[ 4 ] MIT/ベル研究所/ゼネラル・エレクトリック(後にハネウェル)のMulticsプロジェクトから得られた設計経験の多くが取り入れられています。
1984年、StratusはVOSにUnix System Facilities(USF)と呼ばれるUNIX System Vの実装を追加し、カーネルレベルでUnixとVOSを統合した。[ 5 ]
近年、 StratusはPOSIX準拠を追加し、多くのオープンソースパッケージがVOS上で動作するようになった。[ 6 ]
競合する独自オペレーティングシステムと同様に、VOSの市場シェアは1990年代から2000年代初頭にかけて着実に縮小した。[ 7 ]
VOS は、 PL/I、COBOL、Pascal、FORTRAN、C ( VOS Cおよび GCCコンパイラを使用)、C++ ( GCCも使用) 用のコンパイラを提供します。[ 8 ] これらのプログラミング言語はそれぞれ、VOS システムコール (たとえば、s$seq_readファイルからレコードを読み込む) を実行でき、PL/I スタイルの可変長文字列をサポートする拡張機能を備えています。開発者は通常、システム上でコンパイルする前に、お気に入りの VOS テキストエディタまたはオフラインでコーディングします。VOS IDE アプリケーションはありません。
Stratusはこれまで、Motorola 68000マイクロプロセッサファミリー(「FT」および「XA」シリーズ)、Intel i860マイクロプロセッサファミリー(「XA/R」シリーズ)、HP PA-RISCプロセッサファミリー(「Continuum」シリーズ)、およびIntel Xeon x86プロセッサファミリー(「Vシリーズ」)をベースとしたハードウェアプラットフォームを提供してきました。VOSのすべてのバージョンには、ネイティブ命令セットを対象としたコンパイラが用意されており、一部のバージョンにはクロスコンパイラも用意されています。
Stratusは、VOSリリース14.3(Continuum版)でPOSIX APIのサポートを追加し、VOSリリース14.4ではGNU C/C++コンパイラ、GNU gdbデバッガ、および多くのPOSIXコマンドのサポートを追加しました。VOSのリリースが進むにつれてPOSIX.1の機能が追加され、現在では多くのユーザーモードのオープンソースパッケージが正常にビルドできるようになっています。そのため、リリース17.0以降、StratusはVOSをOpenVOSに名称変更しました。
Stratusは、Samba、OpenSSL、OpenSSH、GNU Privacy Guard、OpenLDAP、Berkeley DB、MySQL Community Server、Apache、IBM WebSphere MQなど、多数のサービスに対応したポートを提供しています。
VOSにおける数値は、基盤となるハードウェアプラットフォームのエンディアンに関係なく、常にビッグエンディアンです。x86プロセッサを搭載したリトルエンディアンサーバーでは、コンパイラはメモリへの値の読み書きを行う前にバイトスワップを実行し、データをネイティブのリトルエンディアン形式に変換します。
VOSには、メニューシステムの作成やタスクの自動化などに使用できる、かなり完成度の高いコマンドマクロ言語があります。VOSコマンドマクロは、コマンドラインまたはユーザーインターフェイスの「フォーム」を介して引数を受け取ります。引数は、コマンドマクロの先頭にある「パラメータ」セクションで定義されます。この言語は、if/then/else、ブール演算、「while」ループ、「goto」、優れたエラー報告など、さまざまなステートメントをサポートしています。コマンドマクロ言語は、対話モードと非対話モード(バッチまたは開始されたプロセス)で実行できます。プロンプトをキャプチャして適切な応答を送信することで、プログラムを自動化するために使用できます。このため、Stratusはコマンドマクロ言語の機能を制限しました。[ 9 ]
マクロ言語はユーザー定義関数をサポートしておらず、インクルードファイルも容易にサポートしていません。文字列処理はエラーが発生しやすく、特に制御文字が埋め込まれている場合は顕著です。
Visual Studio のコマンド マクロ用の構文強調表示拡張機能は、Visual Studio Marketplaceで入手できます。
VOSはftServerシリーズに移行する前は、主にPL/Iと少量のアセンブリ言語でコーディングされていました。 1991年時点では、システムはPL/IとCで記述されており、アセンブリ言語はわずか3%でした。[ 10 ]
その全体構造はMulticsと多くの共通点があり、システムの多くの機能は程度の差こそあれMulticsに遡ることができます。このシステムはソフトウェア設計者やプログラマーに多くの基本的な抽象化を公開しており、最も注目すべきは次の点です。
プロセスはVOSにおけるスケジュールされたエンティティであり、各プロセスにはシステムによる操作方法を制御する一連の属性があります。たとえば、プロセスにはユーザー名とプロセス名があります。前者は、VOSがプロセスの外部デバイスやファイルシステム内の項目へのアクセス権を決定するために使用されます。特に重要なのは、プロセスの特権フラグです。これはバイナリ属性です。特権プロセスは特権操作を実行できます。このメカニズムは、システム全体に影響を与える可能性のある強力な操作(システムのシャットダウン、ハードディスクのマウント解除など)を制限するために使用されます。
VOSはStratus Technologies社のみが販売しています。配布メディアは、Continuum向けが3.5mm DATテープ、初期のVシリーズプラットフォーム向けがSDLTテープです 。OpenVOSリリース17.0以降、Stratus社はDVDまたはリリースファイルのダウンロードによるOpenVOSの配布をサポートしています。ソフトウェアのインストールは、Stratus社のフィールドエンジニアまたはお客様のシステム管理者が行うことができます。
コマンドラインインターフェースは、VOSシステムにおける主要かつ最も強力なユーザーインターフェースです。
必要に応じて、コマンドマクロスクリプト[ 11 ]によってユーザーは「フォーム」ベースのサブシステムにロックされる場合がありますが、熟練したユーザーであればこれを突破してコマンドラインアクセスを取得できます。(実際、Stratusシステム管理者は、FMS(Stratusフォーム管理システム)からコマンドラインへ脱出しようとするとユーザーがログアウトされるようにユーザーアカウントを設定することが可能です。)
コマンドマクロやプログラムは、引数を指定して呼び出すことで、利用可能なすべてのパラメータを一覧表示するフォームを表示できます。ユーザーは「Tab」キーを使ってこのフォーム内を移動できます。各パラメータは通常、ユーザーが入力できる内容を制御するために制限されています。これには、有効な値のリスト、数値のみ、テキストのみなどが含まれます。パラメータは「secret」タグを使用して非表示にしたり、必須項目にすることもできます。
VOS のすべてのコマンドは、単語をアンダーバーで区切って完全に定義されています。たとえば、`change_current_dir` は作業ディレクトリを変更します。VOS のヘルプシステムはこの規則を使用して、使用可能なコマンドのサブセットを探しているユーザーを支援します。たとえば、「change」に関連するコマンドは、`help -match change`で検索できます。
ユーザーは、コマンドの略語を含むファイルを使用してコマンドインターフェースをカスタマイズできます。コマンドの略語は、慣例として、それが表すコマンドの最初の文字にちなんで命名されるため、ccd はchange_current_dir foodirに展開できます。
VOSはContinuumおよびftServerシステムで使用されており、どちらも高い耐障害性を持つように設計されています。そのため、これらのシステムは通常、銀行、病院、通信会社、取引処理会社など、安全性が重視されるアプリケーションやミッションクリティカルなアプリケーションで使用されています。[ 12 ]
VOS は以下のプロトコルをサポートしています[ 8 ]
VOS の旧バージョンでは、OS TCP/IP (Operating System TCP/IP) と呼ばれる非 OSI 標準 TCP/IP が実装されていました。VOS はバージョン 14.x 以降、OSI 準拠の Streams-TCP を実装しています。OS TCP/IP を使用する古いアプリケーションは、STCP を使用するために移植する必要があります。[ 13 ]これは、OS TCP/IP が OSI 準拠ではないいくつかの機能をサポートしていたため、廃止された機能の喪失を意味する可能性があります。V シリーズが動作する ftServer ハードウェアは、TCP/IP と X.25 (オプションの NIO を搭載している場合のみ X.25) のみをサポートしています。Websphere MQ 6.0 (別名 MQ シリーズ) は TCP/IP ベースであるため、ftServer ハードウェアでもサポートされています。レガシー プロトコルをサポートするデバイスは Continuum ハードウェアで動作し、Open StrataLINK [ 14 ] ネットワークを介して現在のハードウェアからアクセスできます。
VOSには、最初からフォールトトレランスが組み込まれています。ハードウェアレベルでは、主要なデバイスはロックステップデュプレックスモードで動作します。つまり、2つの同一のデバイスが同時に同じ動作を実行します。(さらに、各デバイスまたはボードもデュプレックス化されているため、ハードウェアレベルでボード内部の障害を特定できます。これが、Stratusハードウェアが「ロックステップ」と定義できる理由です。)[ 15 ]
これらのボードはオペレーティングシステムによって常時監視されており、軽微な不整合(ディスクへの書き込みや読み取りの失敗など)は自動的に修正されます。許容できない数の障害を報告したボードはシステムによってサービスから除外されます。デュプレックス方式のボードは、ホットフィックスによって問題が解決されるまで動作を継続します。これには、CPU、ディスクドライブ、および論理的にデュプレックス可能なその他のデバイス(定義上、通信デバイスは含まれません)が含まれます。オペレーティングシステムは、シンプレックス方式のハードウェア障害によるクラッシュを回避するように設計されています。
二重化の考え方はシステム電源にもしばしば適用され、Stratusシステムは2つの独立した交流電源から給電できるため、どちらか一方の電源からの電力供給が途絶えた場合でも耐えることができます。
障害が発生した場合、システムは通常どおり処理を継続し、RSN(リモートサービスネットワーク)を介してStratusカスタマーサービスに自動的に障害チケットを発行します。StratusカスタマーサービスはRSNを使用してシステムに接続し、問題を調査した後、交換部品を発送します。簡単な基板交換の場合は、お客様はインジケーターランプを確認し、故障した回路基板を取り外し、交換用基板を挿入するだけで済み、システムの動作を中断する必要はありません。
VOSは、以下のような様々な独自のファイル形式をサポートしています。
VOS APIを使用すると、ファイルごとに複数のインデックスを作成し、レコードの内容、外部キー、内部キー、または明確に定義された複数のキーに基づいてソートできます。1つ以上のインデックスを持つVOSファイルは、C-ISAMデータベーステーブルとして使用できます。
VOSは、システム名、ディスク名、ディレクトリを含む独自のファイル命名構文を使用し、各要素は「">」記号で区切られます。通常、システムディスクはCPUと同じモジュールに格納される#m1ため、VOSクラスタのシステムファイルは次のように参照されます。
(%system)#m1_d01>system>devices.table
VOS のディスク割り当てとメモリは「ブロック」単位で構成され、各ブロックは 4,096 バイトです。メモリは RAM またはページングの形式をとります。VOS システムはページング パーティションとページング ファイルをサポートしています。最新バージョンの VOS では、ページング ファイルはシステム管理者によって動的に作成できます (ただし、再起動なしでは削除できません)。これらのページング ファイルは、理論的には複数のエクステント (カーネルからはミニ ページング パーティションとして認識されます) で構成され、それらは連続している場合もそうでない場合もあります。ただし、非連続のエクステントはディスク アクティビティを大幅に増加させるため、推奨されません。管理者は、システムの起動後できるだけ早く、ページング ファイル用に可能な限り最大のエクステントを作成する必要があります。[ 16 ]
VOSは、すべてのファイル、ディレクトリ、デバイスに対して、書き込み、読み取り、実行、およびアクセス権限なし(null)をサポートしています(ただし、ディレクトリとファイルではアクセス権限リストが若干異なります)。アクセス権限は、ユーザー、グループ、または全世界に割り当てることができます。実行可能プログラムを実行するには、読み取りアクセス権限のみが必要です。ただし、そのプログラムが存在するディレクトリに対して、ユーザーが「ステータス」アクセス権限を持っていることが前提となります。
VOSはMulticsからアクセス制御リストを継承しており、ディレクトリアクセス制御リストも実装しています。ファイルにアクセス制御リストが設定されていない場合は、そのファイルを含むディレクトリのデフォルトのアクセス制御リストが適用されます。
デバイスへのアクセスは通常、管理者がデバイスにリンクするファイルを作成することによって制御されます。(これはOpenVOSでは当てはまりますが、オリジナルのオペレーティングシステムには当てはまりません。)その後、このファイルへのアクセス権が付与され、それによってデバイスへのアクセス権限が設定されます。
VOS は常にネットワーク対応のオペレーティングシステムでした。ネイティブ API のほぼすべてのシステム コールには、操作がどのコンピュータに影響を与えるかを決定するパラメータがあります。[ 17 ] [ 18 ]操作がローカルでない場合は、リモート サブルーチン呼び出し を介してターゲット コンピュータにリダイレクトされます。たとえば、ファイル名が解析され、ファイルが存在するコンピュータが示されます。
StrataLINK ネットワーク モデルでは、コンピュータの命名に 2 階層構造を採用しています。各コンピュータはモジュールと呼ばれ、モジュールはシステムとして集約されます。各システムは単位として管理されます。つまり、システム内のすべてのモジュールは、そのシステム上のすべてのディスクとハードウェア デバイスを認識しています。この結果、システム名で始まるファイル名は他のコンピュータ上のファイルを参照し、特別なネットワーク設定なしで開くことができます。デバイスについても同様です。プロセスなどの他のシステム エンティティは、%システム#モジュールと記述されるモジュール名を使用して参照されます。VOS のシステム名とモジュール名は、IP アドレスやドメイン名とは定義されていません。VOS API は、インターネットが広く普及する前、URL が発明されるずっと前の 1980 年後半に開発されました。
歴史的に見ると、StrataLINKは独自の10Mb CSMA/CDリングネットワークであり、当時としては高いパフォーマンスを非常に低いメモリオーバーヘッドとCPU使用率で実現していました。しかし、イーサネットが主流のネットワーク規格となり、メモリとCPU処理コストが低下したため、10Mbを超える拡張は行われず、TCP/IPが主流となる中で廃止されました。
Open StrataLINKは、広域通信にX.25を使用することもできます。Open StrataLINKプロトコルを広域通信に使用することは、StrataNETとも呼ばれます。