議論/ドライバ/ドライバモデル


Top / 議論 / ドライバ / ドライバモデル

ドライバインターフェース考えましょう ひげぽん

ファイルサーバ暫定仕様

2004/01/14

広くご意見を伺いたいです。

コメントはありません。 コメント/議論/ドライバ/ドライバモデル?

お名前:

2003/11/14 BeOS研究ひげぽん

突っ込み

コメントはありません。 コメント/議論/ドライバ/ドライバモデル?

お名前:

2003/10/04風呂メモひげぽん

  1. ドライバ作者は自分の書こうとしているドライバがMonaでどの分類に入るかを判断する。もしくはMona PJメンバと話し合う。.mjt氏のドライバデータフロー図が役に立つことでしょう。
  2. 上記分類によりドライバが継承すべきC++のクラスがきまる。(ここ重要)
    • ここでいうクラスは抽象クラスでInterfaceを決めるものです。
    • つまりドライバがpublicに実装すべきメソッドが強制されます。
    • privateメソッドはそのドライバ固有なものなのでどうにでも実装してください
    • また継承もとの抽象クラスにないpublicメソッドを実装することはかまいませんが。
    • Monaカーネル上でそのpublicメソッドが外部プロセスに公開されるとは限りません。
  3. ドライバ作者は上記クラスを継承して実装を行います。
    • その際に他のMonaカーネルオブジェクト(C++のオブジェクトではないことに注意)にメッセージを送ってサービスを受けることが出来ます。
  4. 次に実装したドライバのpublicメソッドに対応するメッセージを受け付けるドライバサーバを実装します。(ここはアーキテクチャ非依存のはずです)
  5. ドライバとドライバサーバのやり取りは広義でのメッセージングを使います。
    • 具体的にはドライバサーバ has ドライバ
    • 要はドライバサーバ内で XXDriver* driver = new XXDriver()として
    • driver->method()とする。(これも一種のメッセージ送信)
  6. 上記ドライバ、ドライバサーバで1つのサービスを提供する。
  7. ドライバサーバの更に上の階層にドライバサーバサーバがいることもあり。
    • たとでばFATドライバサーバは、FDCドライバサーバの上層に位置する。
  8. ドライバサーバ間のやり取りは全て汎用メッセージング機構で行う。

まとめると

  1. Monaに用意されているC++のクラス定義でインターフェースを強制
  2. ドライバサーバは上記インターフェースのpublicメソッドに対応するメッセージを受け付ける(ここは強制ではなくルールであることに注意)
  3. 上記により各種サービスをオブジェクト指向っぽく提供する。
  4. 結果的にドライバサーバは指定されたC++のクラスのインターフェースは必ず持つはず

風呂メモに関するご意見

コメントはありません。 コメント/議論/ドライバ/ドライバモデル?

お名前:

これではなくて

メッセージインターフェース
MM_FDC_READDiskDriver#read(FDCDriver#readではない)
MM_FDC_WRITEDiskDriver#write

こっちの方

メッセージあて先メッセージインターフェース
FDCドライバサーバMM_READDiskDriver#read(FDCDriver#readではない)
FDCドライバサーバMM_WRITEDiskDriver#write

風呂メモの欠点と改善案

メモ by Gaku

ドライバを使う側使う側に公開されたインタフェースインタフェースtoメッセージエンコーダ共有メモリメッセージtoインタフェースデコーダOSが規定するドライバのインタフェースドライバ
ドライバ使いたい人が書くOS側で提供するライブラリ(基底のみ?)ライブラリ内部カーネルが面倒見るライブラリ内部OS が用意するライブラリ(基底クラスを用意)ドライバ実装者が書く
ドライバインタフェース左の欄とは説明上区別してあるが明確な区別が無くても良い右の欄とは説明上区別してあるが明確な区別が無くても良いドライバサーバインタフェース

メモ2 by Gaku

アプリ<=>サービスその1<=>サービスその2<=>ドライバその1<=>ドライバその2<=>ハード
共有メモリ使ったメッセージDLL 呼び出し共有メモリ使ったメッセージDLL 呼び出しI/Oアクセス

 

test9999l47.png

とりあえずの妄想。 -- .mjt

MENU

now: 4

リンク


最新の20件
2018-05-03 2017-09-29 2017-04-25 2017-01-10 2016-12-11 2016-10-04 2016-08-14 2016-06-05 2016-05-29 2016-04-15 2015-12-28 2013-02-25 2013-02-21 2013-02-20 2013-02-12 2013-02-11 2013-02-10
最新の20件
2010-02-01 2010-01-31 2010-01-30 2010-01-29 2010-01-16

Counter: 3581, today: 1, yesterday: 1

添付ファイル: filetest9999l47.png 483件 [詳細]

リロード   新規 編集 凍結 差分 添付 複製 改名   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS

Last-modified: 2008-03-28 (金) 15:48:02 (3761d);  Modified by mona
PukiWiki 1.4.6 Copyright © 2001-2005 PukiWiki Developers Team. License is GPL.
Based on "PukiWiki" 1.3 by yu-ji
Powered by PHP 5.2.17
HTML convert time to 0.065 sec.