tosihisaの日記: オブジェクト指向言語とデバイスドライバの実装 1
日記 by
tosihisa
最近、Java でプログラムを書きつつ、思うのですが、
Java の様な、「オブジェクト指向」言語と、よくある
「デバイスドライバ」が、よく似ている事に気付きました。
「デバイスドライバ」を作る場合、OS の仕様にもよりけり
ですが、概ね、以下のインターフェースが存在します。
・open() - デバイスを(あるプロセスに対して)使用可能にする。
・read() - デバイスからデータを読む。
・write() - デバイスにデータを書く。
・close() - (あるプロセスが)それ以上デバイスを使わない様に通知。
もちろん、これら以外のインターフェースもありますが、
OS は、汎用的であるために、標準的なデータ送受信の口
(インターフェース)を定義しています。
例えば、パラレルポートと、シリアルポートでは、データ
の送受信方法は、全然異なりますが、でも、基本的に、
open() でそのデバイスを使う事を明示し、read()/write() で
読み書きして、close() でデバイスを使わない事を明示します。
で、そのインターフェースに従っていれば、実際の動作は、
各ドライバの仕様にまかせられ、OS はインターフェース以上の
ものに関しては、原則的に関与しません。
これは、考えてみれば、そのまま、Java での、クラス間
でのデータの受け渡しインターフェースに合致します。
でも、うーん...。これが「オブジェクト指向」なのかと
言うと、何か少し違う様な気もしますね。
「オブジェクト指向」理解への道のりは、まだ遠そうです。
Java の様な、「オブジェクト指向」言語と、よくある
「デバイスドライバ」が、よく似ている事に気付きました。
「デバイスドライバ」を作る場合、OS の仕様にもよりけり
ですが、概ね、以下のインターフェースが存在します。
・open() - デバイスを(あるプロセスに対して)使用可能にする。
・read() - デバイスからデータを読む。
・write() - デバイスにデータを書く。
・close() - (あるプロセスが)それ以上デバイスを使わない様に通知。
もちろん、これら以外のインターフェースもありますが、
OS は、汎用的であるために、標準的なデータ送受信の口
(インターフェース)を定義しています。
例えば、パラレルポートと、シリアルポートでは、データ
の送受信方法は、全然異なりますが、でも、基本的に、
open() でそのデバイスを使う事を明示し、read()/write() で
読み書きして、close() でデバイスを使わない事を明示します。
で、そのインターフェースに従っていれば、実際の動作は、
各ドライバの仕様にまかせられ、OS はインターフェース以上の
ものに関しては、原則的に関与しません。
これは、考えてみれば、そのまま、Java での、クラス間
でのデータの受け渡しインターフェースに合致します。
でも、うーん...。これが「オブジェクト指向」なのかと
言うと、何か少し違う様な気もしますね。
「オブジェクト指向」理解への道のりは、まだ遠そうです。
そもそもチミは (スコア:3, すばらしい洞察)