Architecture of FlexOS

FlexOSのアーキテクチャー


以下、FlexOSのアーキテクチャーにつき、概説マニュアルより一部抜粋して掲載致します。


モジュール設計
FlexOSは、モジュール構造のオペレーティング・システムです。その機能は、ひとつのモノリシックなコード体系ではなく、各機能が独立したソフトウェア・モジュール群に組み込まれています。
FlexOSのモジュール設計には、次の3つの利点があります。

(1)各モジュールとも、他のモジュールから独立したコーディング、デバッギング、および保守が可能です。

(2)機能上必要なモジュールだけをシステムに組み込めばよく、不要なモジュールは取外して、必要なメモリ及びコストを削減することができます。

(3)ハードウェア依存コードがデバイス・ドライバに分離されているため、異なった環境への移植が簡単です。


アプリケーション・モジュール
アプリケーション部は、次のようなロード可能な・プログラムで構成されます。

− ユーザ・アプリケーション
− ユーティリティ
− ウインドウ・マネージャ
− 共用ランタイム・ライブラリ (SRTLs)

プログラムは、それぞれ分離されたユーザ・メモリ内でユニークなプロセス・コンテキストとして、各々独立して実行されます。
FlexOSは、保護モードを使って、アプリケーション相互のメモリ空間侵害を防ぐことで、システムの安全性を保証しています。


システム・モジュール
システム部は、次のようなデバイスに独立なモジュールで構成されています。

− スーパバイザ
− カーネル
− リソース・マネージャ


システム部へのプログラミング・インタフェースは、スーパバイザ・コール(SVC)と呼ばれるシステム・サービス群と、システム・テーブルと呼ばれるデータ・ストラクチャ群で構成されています。


物理モジュール
物理部は、ディスク・ドライブ、コンソール、およびその他の周辺機器を制御する、デバイスに依存するモジュールで構成されます。このモジュール群は、単一のリソース・マネージャによって制御されるそれぞれが独立しているデバイス・ドライバで構成されます。
物理部へのプログラミング・インタフェースは、アプリケーションからのSVC及びアプリケーションからは直接呼び出せないドライバ・サービス群から構成されます。
FlexOSの最も小さいシステムは、スーパバイザ(カーネル、メモリ・マネージャ、タイマ、および構成モジュール)、周辺装置リソース・マネージャ、およびデバイス・ドライバで構成されています。また、これ以外のリソース・マネージャ (コンソール、ディスク、およびパイプ)およびデバイス・ドライバを、必要に応じて追加することができます。
基本システムの拡張機能(オプション)は、下記のとおりです。

− FlexNET --
ネットワークのアプリケーションに、遠隔リソースへのトランスペアレントなアクセスとオープンなトランスポート・レイヤ機能を提供します。

− DOS アプリケーション環境 --
DOS アプリケーションを、プロテクト・モードのマルチタスキング環境で実行します。


スーパバイザ
スーパバイザは、オペレーティング・システムの入り口(エントリ・ポイント)といえます。スーパバイザは、アプリケーションからのスーパバイザ・コールを前処理した後、要求されている動作と指定されたデバイスに従って、適切なリソース・マネージャに送ります。また、リソース・マネージャを呼び出す前に、アクセス保護とメモリ領域のチェックも行います。
全てのデバイスは、オープンされた後はじめてアクセス可能となります。遠隔デバイスの場合、スーパバイザが呼び出すのはローカルのリソース・マネージャではなく、ネットワーク・リソース・マネージャになります。システム・リソースへのアクセスは全て、スーパバイザをとおして行われるため、「ネットワーク認知型」でなくても、アプリケーションはネットワーク・デバイスにアクセスすることができます。このことは、通常のFlexOSアプリケーション又はPOSIX ランタイム環境を使用するアプリケーションにあてはまります。ローカル・デバイスにアクセスできるアプリケーションならば、遠隔デバイスへのアクセスも自動的に可能です。


カーネル
カーネルは、プリエンプティブ式イベント駆動型ディスパッチャにより、プロセスのコンテキストをトランスペアレントに切換えて、割込みに応答します。
カーネルのプライオリティ・スケジューラは、
優先度(プライオリティ)に基づいて CPUを割当てるとともに、チック毎に1回発生するタイマ・イベント(実際の値は、タイマ・ドライバの設定状況によって異なります)を利用して、タイム・スライシングを管理します。プロセスの優先度が等しい場合は、ラウンド・ロビン方式でスケジューリングされます。


タイマ
タイマ・モジュールは、リアルタイム・クロック(チック、時刻を含む)を取扱います。標準市販キットでは、タイム・スライスに従って、タイマが強制ディスパッチを行います。他のイベントのためのディスパッチが必要な場合は、システムのタイマを使用禁止にすることもできます。
タイマは、OEM 側で変更可能です。クロック・チックの長さ、遅れ精度(granularity of delayls)、および時刻管理は全て、自由に構成可能です。


ローダ
プログラムのローディングを行うローダ・モジュールは、ローカル又は遠隔(ネットワーク式)ディスク・システムを必要とします。


構成
構成モジュールは、システムの構成を制御します。システムがブートされると、まず最初に構成モジュールのコードが実行され、ハードウェアのグローバルな初期化、リソース・マネージャの選択、および初期システム・プロセスの生成を行います。構成モジュールのコードはOEM 側で変更可能なため、システム設計者は、カスタム・アプリケーションを柔軟に構築することができます。


メモリ
メモリ・モジュールは、システムおよびユーザ・メモリを管理します。FlexOSは、様々なCPU の多様なハードウェア・メモリ管理ユニット (MMU)に対応できる、汎用メモリ・モデル設計を採用しています。
FlexOSのメモリ・モデルは、次の各種メモリで構成されます。

− 物理メモリ --
コンピュータ内の物理的にアドレス可能な全メモリを表します。ROM またはビデオ・ディスプレイ用ビットマップなどの特種ハードウェア用のメモリもこれに含まれます。

− ユーザ・メモリ --
物理メモリのうち、ユーザ・プロセス用に割当てられた部分を表します。FlexOSでは、プログラムがディスクからロードされる時に、コードとデータの両方が、ユーザ・メモリにロードされます。このコードは変更不可で、データは実行不可です。また、プロセスのスタックはロード時に生成され、ヒープは(必要に応じて)ラン・タイムに生成されます。スタックもヒープも共に実行不可です。

− システム・メモリ --
物理メモリのうち、FlexOS用に割当てられた部分を表します。ドライバは全てシステム・メモリにロードされるため、ドライバに割当てられたメモリは全て、システム・メモリと見なされます。プロセスのユーザ・メモリに、ドライバから直接アクセスすることはできません。FlexOSは、ユーザ・メモリ・アドレスをシステム・メモリ・アドレスに変換するサービスを提供しています。

FlexOSは、オペレーティング・システム、デバイス・ドライバ、又は他のアプリケーションが、アプリケーション・プログラムによって不注意に破壊されることを防止する、完全な保護環境を提供します。FlexOSメモリ保護機能は保護のための「壁」を作って、各々のユーザ・アプリケーションを分離するほか、ユーザ・アプリケーションとシステム・プロセスを分離します。


リソース・マネージャー
リソース・マネージャとは、アプリケーションのI/O リクエストを、適切なデバイス・ドライバへの呼び出しに変換するモジュールです。


ディスク
ディスク・リソース・マネージャは、ハード・ディスク、フロッピィ・ディスク、RAM ディスクなど、全てのディスク・タイプのデバイス上でディスク・ファイル・システムを管理します。
FlexOSは、階層ディレクトリで大規模のデータ・ファイルを収容できる、共用ディスク・システムをサポートしています。
FlexOSのディスク媒体は、DOS に互換です。また、レコード・ロッキング機構とファイル・ロッキング機構を採用して、信頼性とデータ保護に万全をはかっています。


コンソール
コンソール・リソース・マネージャは、対話型のウインドウ式コンソール・デバイスを制御するほか、文字専用およびグラフィック用仮想コンソールのデバイス・ドライバを管理します。FlexOSは、文字コンソール、キーボード、グラフィック・コンソール・ドライバおよびマウス・ドライバを提供します。


周辺装置
周辺装置リソース・マネージャは、固有のファイル構造を持たない全てのデバイス(プリンタ、プロッタ、通信デバイス、およびOEM特有デバイスを含む) を管理します。
プロセスから出される要求も、最小限の処理で、適当な特殊ドライバに渡されるなど、周辺装置リソース・マネージャでは、他のリソース・マネージャと比較して、ドライバが受け持つ責任の比重がより大きくなります。


パイプ
パイプ・リソース・マネージャは、パイプと呼ばれる名前付きFIFO(先入先出)メモリ・ファイルを使用する、プロセス間通信および同期化を管理します。パイプは、あるプロセスから別のプロセスにメッセージを渡すか、又は、プロセスの動作を同期化するために使用されます。また、パイプ・リソース・マネージャは、共用メモリ領域を使用するプロセス間通信も管理します。物理デバイスが、パイプ・リソース・マネージャに制御されることはありません。


ネットワーク
ネットワーク・リソース・マネージャは、オプションのFlexNET の一部です。このネットワーク・インタフェースによって、遠隔リソースへのアプリケーションからのトランスペアレントなアクセスとピア・ツー・ピア (peer-to-peer) のコミュニケーションのためのSVC 群がサポートされます。


デバイス・ドライバ
デバイス・ドライバは、リソース・マネージャと物理デバイスの間のソフトウェア・インタフェースです。各ドライバは個別に構築され、他のドライバから独立しています。
デバイス・ドライバは、リソース・マネージャによって管理されますが、同種の複数デバイスを制御する機能を持っています。例えば、ディスク・ドライバはディスク・コントローラを1台制御することによって、ディスク・コントローラの制御下にある複数のディスク・ドライブを制御することができます。

FlexOSは、デバイス・ドライバをインストールする方法として、次の3つをサポートしています。

− デバイス・ドライバをシステム・イメージに、恒久的に統合します。
− システム・ブート時にダイナミックにインストールします。
− システムが立上がって、実行されている間にダイナミックにインストールします。

ドライバがダイナミックにロード可能なため、ドライバのコーディングやテストを行うために、ソフトウェア開発者は、特別なシステム構成を新たに再構築する負担もありません。また、システム管理者が、システムを止めずに構成を変更できることも、ダイナミック・ローディング機能のメリットです。
FlexOSは、サブ・ドライバもサポートしています。サブ・ドライバとは、リソース・マネージャではなく、別のドライバによって制御されるドライバです。サブ・ドライバを利用すれば、ハードウェア・インタフェースの異なる同種の複数デバイスを、1台のドライバから制御することができます。


FlexOSの構成
モジュール設計を採用するFlexOSは、他のシステム部分に影響を与えずに変更を行えるため、再構成作業が非常に簡単です。FlexOSは、次の3つの異なるレベルで構成を行うことができます。

− 基本システム構成のレベル
OEM 又はシステム・インテグレータが、システムにリンクされるリソース・マネージャとデバイス・ドライバの種類を決定することで、特定のハードウェア環境に対応したFlexOSの構成を行うことができます。

− ランタイム・システム構成のレベル
システム管理者がユーザ・アカウントの作成および管理を行い、全ユーザに適用されるシステム・レベルでの定義を作成し、また、システム・オペレーションに影響を与えない範囲でデバイスのインストールおよび除去を行うことで、FlexOSの構成を行うことができます。

− 個人ユーザ・アカウントのレベル
デフォルト・ログオン・ディレクトリ、デバイス論理名の定義、コマンド、複合ディレクトリ・パス等などについて、各ユーザが個人の意向を反映した環境を構成することができます。

 


FlexOS案内ページに戻る
ホームページに戻る