[b-free: 512] About LOWLIB

りん (NBG02466@niftyserve.or.jp)
Mon, 04 Dec 1995 21:12:00 +0900

 はじめまして りん です。システム構成について思うところがありまして
先日、TRONSHOWのとき内藤さんや電脳丸さんに話したら、そういう話は、ぜひ
メーリングリストでして欲しいと言われましたのでしゃしゃりでてきました。

 話は LOWLIB についてです。B-free では、システムコールはすべていったん
カーネルモードの LOWLIB が呼び出され、その中からプロセスとして動作する
各マネージャに処理が依頼されることになっています。しかし、この方法では
マネージャ毎にカーネルモードの LOWLIB が必要となり安全性が損われる上、
ユーザモードとカーネルモードの行き来がはげしくシステム性能を落とす結果
ともなりかねません。他の方法も検討した方が良いでしょう。
 ここで参考になるのが WindowsNT です。NT では API が DLL として提供さ
れています。DLL は要求を変換して WIN32 に転送するというちょうど LOWLIB
相当の処理をしているわけですが、これはユーザモードで動きます。もちろん
転送そのものはカーネルを呼び出すでしょうが、要求ごとに異なる変換処理は
ユーザモードのコードで行われるわけで、新しい機能の追加に対する安全性は
LOWLIB のやり方よりはずっと高そうです。実際の NT では高速化のためさら
に技巧が凝らされているようです。状態参照のような必ずしもカーネルモード
で実行する必要のないものは DLL だけで処理する。GDI コールでは一回毎には
WIN32 を呼び出さず要求をまとめてから呼び出す。などのことが行われている
ようです。DLL はユーザモードで動作する為、これらの手法は高価なカーネル
コールを減らし高速化に寄与しているようです。
 B-free でも DLL による API を検討してみてはいかがでしょうか。

  りん  NBG02466