[b-free 160] RE: GUI architecture

AKIYOSHI,Masamichi (akiyoshi.masamichi@tko.dec-j.co.jp)
Tue, 28 Jan 97 12:04:42 +0900

はじめまして。
いつも読みっぱなしの秋吉と申します。(すみません)
こんな意見でも参考になればと思ってメールを書きました。
どうぞよろしくお願いします。

プログラミングハンドブックを読む限りでの私の理解ですが,
BTRON1 での表示まわりの構造は次のような感じではないかと思います。
いくつかの API は BTRON1 の仕様書に規定されている通りです。

+-------------------------------+
| アプリケーション |
+======================+ | ←ウインドウマネージャ仕様書
| ウインドウマネージャ | |
+======================+========+ ←ディスプレイプリミティブ仕様書
| ディスプレイプリミティブ |
+-------------------------------+ ←(規定がない or 公開されていない)
| ドライバ |
+-------------------------------+ ←(デバイスごとに異なる部分)
| ディスプレイデバイス |
+-------------------------------+

> ということなのですが、性能は(極端でなければ)二の次として造り易さ、堅牢性
>、保守性の有利なほうを採用したいと思います(どっちが得かよくわからない)。
> 最初のバージョンはVGAかSVGA(800×600)をCPUで描画することになるで
>しょうが、ディスプレイカードにやらせるとしたらディスプレイドライバとのインタ
>ーフェースはどのようにしたらよいでしょうか。
> みなさんのお考えを聞かせてください。よろしくおねがいします。

上の図で,ディスプレイプリミティブとドライバの間のインターフェースは,
BTRON 仕様書にないのですが,本当に存在しなかったり,公開されることがない
とすれば,この部分のインターフェース規定を B-Free で作成し,ドライバの交
換だけで多種のデバイスに対応できるようにするのが,拡張性はもちろん,保守
性も向上すると思います。

ディスプレイプリミティブ部分では,デバイスに依存しない処理(があればそれ
を)を行い,デバイスに依存するものはドライバとして分離してしまうという方
法です。

VGA, SVGA に対する描画処理は,VGA, SVGA 用のドライバの中で CPU がぐりぐ
りやることになります。特定の高機能ディスプレイデバイスのドライバでは,そ
のデバイス用のデータ構造を作ってデバイスに要求を出すような形になるのでは
ないでしょうか。

デバイスドライバとディスプレイプリミティブとのインターフェースを,直接行
うのか,それとも OS 核のデバイス管理機能をつかうのかについては,僕は良く
わかりません。(そこまで深くは考えていない。ごめんなさい。)

> BTRON1でいうところの、ウィンドウマネージャとパネルマネージャは統合し
>たいと考えています( ディスプレイプリミティブとフォントマネージャもウィンド
>ウ・パネルマネージャと合体統合しても良いでしょう)。

ウインドウマネージャとパネルマネージャは統合というより,パネルマネージャ
がウインドウマネージャの上に来るという形になるのではないかと思います。
言い方がキツいかもしれませんが,安易に統合すると保守性が下がりますから注
意が必要だと思いますよ。

中でも特に,フォントマネージャは結構複雑な動きをすることになると思うので,
ディスプレイプリミティブとは分けておいた方がいいのではないかと思います。

参考までに,X での構造は次のような感じではないでしょうか。
ウインドウマネージャや Xlib の機能が BTRON1 と一対一に対応しないので,
簡単には比較できないとは思いますが。

+---------------+---------------+
| ウインドウ | ユーザー |
| マネージャ | プログラム |
+===============+===============+
| Xlib |
+-------------------------------+
[トランスポート]
+-------------------------------+
| Xサーバ |
+-------------------------------+
| ドライバ |
+-------------------------------+
| ディスプレイデバイス |
+-------------------------------+

------------------------------
秋吉理学 (Akiyoshi Masamichi)
akiyoshi@jrd.dec.com
CXP01525@niftyserve.or.jp