オブジェクトベース・マルチプロセス制御・グラフィカルユーザーインタフェースOS(開発コード《GUIDE》)は、GUIベースのアプリケーションをマルチウィンドウ・マルチタスク制御するオブジェクトベース・オペレーティングシステムです。

《GUIDE》のコンセプトは、通信機能およびパフォーマンスの強化、マルチメディア対応を前提として、省メモリー資源、高速イベント対応、高移植性、高柔軟性を追求しています。おもな特徴を以下に示します。


GUIDEの主な特長


GUIDE FAQ

なぜコンパクトなのですか?
オブジェクトベース処理を徹底していますので、共通した概念は同一の取り扱い手順(メソッド)で構成しています。例えば、CPU自体も資源として扱いますので、プロセス・スケジューリングとメモリー、ファイルなどの資源スケジューリングを同じメソッドで実現しています。
メソッドはすべて部品として階層化され、かつリカーシブコールされるように設計しています。 各々の部品の実行頻度は下位部品ほど高く、キャッシュをもったCPUではキャッシュ効果が高くなるため実行速度向上にもつながります。

マルチタスク処理はできますか?
階層化したプロセス(タスクはプロセスの派生クラスと位置付けています)をイベントドリブン方式によるプリエンティブ・スケジューリングによって実行します。これらの仕組みは、それ自体を目的とするのではなく、オブジェクトベースプログラミングおよびコンポーネント・プログラミングを実現する上での必然性から用意されています。したがって、使用する上でも、プログラミングする上でもマルチタスクを意識する必要はありません。また、プロセスごとにプリエンティブ・スケジューリングを任意に禁止・許可できます。

マルチスレッド機能はありますか?
ひとつのプログラムファイル(タスクファイル)の中に、1つのスタティックプロセス・コードと複数のダイナミックプロセス・コードを記述できます。
C言語またはC++言語で記述した main(){...}というスタイルのプログラムはスタティックプロセスといい、これをタスクのメインプロセスといいます。一方、同じプログラム内に、GUIDEで規定された関数の形式で記述したプログラムを、各々プロセスとして登録して実行できます。 この関数は、スタティックプロセスの関数としても使用できますし、独立したプロセスとしても動作します。このプロセスをダイナミックプロセスといい、マルチスレッドと同じ動作を行ないます。

タスク間通信はどのようにおこないますか?
ダイナミックメモリーブロックを、タスク間(プロセス間)で交換します。ダイナミックメモリーブロックの内容は、交換するタスク同士で取り決めしてあれば自由です。
また、イベント通知という方法でタスク間通知を行なうこともできます。イベント通知およびダイナミックメモリーブロックの交換とも、タスクスケジューリングの事象として利用できます。

DLL(ダイナミックリンクライブラリ)に相当する仕組みはありますか?
プログラムファイルの形式は、TSK形式(タスク)、MAN形式(マネージャ)、DLF形式(ダイナミックリンクファンクション)があります。
MAN形式と、DLF形式がWindowsのDLLに相当します。MAN形式はオブジェクトマネージャと呼ぶダイナミックプロセス・サーバーとして機能します。最近話題のAgent機能を提供します。DLF形式は、関数サーバーとして機能しますので、複数のタスクから共通に使用する関数をDLF形式にしておけばプログラムサイズをコンパクトにできます。

OLEのようなことはできますか?
マルチシート環境は、各々のシートがプロセスとして機能します。
シートは階層化に加え、従属化と独立化を自由に扱うことができますので、OLEなどの概念を導入するまでもなく同様の機能が最初から備わっています。1枚のシートに配置した機能シート(各々がタスクとして動作する)の組み合わせは自由です。任意の位置に機能シートを割り当ててそこにタスクをロードすれば、OLEと同じ効果が得られます。

アプリケーション開発はどのようにおこないますか?
C言語、またはC++言語で開発します。MS−DOS、Windowsの環境で開発できます。

簡単なプログラミングは可能ですか?
もっとも手軽な方法はControlManagerとよぶオブジェクトマネージャを利用して機能部品をシート上に配置する方法です。
コントロールシートという機能シートの上に、ボタン、メニュー、テキストなどを自由に配置できます。各々の部品は、マウス操作、キー操作などに対応してコールバックとよぶユーザー定義関数を呼び出します。『このボタンをクリックしたらxxする。』のようなプログラムを考える場合でも、【xxする】の部分をコールバック関数として記述するだけで、ボタンの配置、大きさなどをパラメータとして指定してプログラムは完成します。

機能部品は簡単に作成できますか?
部品作成はC++言語で、イベントメソッドという関数を定義するだけです。関数は、部品の動作を規定する構造体を定め(C++ではクラスといいます)、マウス操作、キー入力、リライト要求などのイベントに対してどのように振る舞うかを記述します。
ユーザ定義部品を作成するにあたっては、マウス操作、ボタン操作、メニュー選択など、基本的なクラスについてのGFCクラスライブラリを利用できます。
機能部品はさらに他の部品を利用して、その組み合わせとして定義することもできますし、DLFおよびオブジェクトマネージャを利用して記述することもできます。


用語解説

GFC
Guide Faundation Classといい、GUIDEの基本クラスを定義しています。
DLF
Dynamic Link Functionといい、アプリケーション実行時に必要に応じて呼び出す関数サーバーです。動作は従来のオーバーレイと同様ですが、どのアプリケーションからも制限なく利用でき、かつ独立している点が異なります。WindowsのDLLと同じように振る舞います。


(C)1994 アクト株式会社