FreeBSD - 既存のドライバモデルを調べよう

Mona のドライバモデルをきちんと決めるべく既存の OS のドライバモデルを調べていこう。

バイス

デバイスドライバの構成

動き方

典型的な入出力デバイスの場合

  • 入出力要求をデバイス単位の処理キューに置く
  • 割り込み時にキューから取りだし処理をして通知

デバイスドライバ上部と下部がキューを介して通信。

割り込み

割り込み処理では、グルー関数が割り込みベクタテーブルに登録される。
グルー関数は統計情報更新したあとに、ドライバの割り込み処理スレッドをスケジュールして戻る。

ハードウェア抽象化・管理

  • GEOM 層
  • CAM 層
    • 資源割り当て
    • ドライバ非依存処理
      • SCSI サブシステム
  • ATA
    • ATA 共通コード

所感

ドライバ割り込み処理が即座に実行されなければいけないケースはないのかなあ。>グルー関数。
これでハードウェア応答要求に間に合うのだろうか。もしそうならば、現状の Mona のスタイルでも良いかもしれない。