技術

[xv6 #29] Chapter 2 – Traps, interrupts, and drivers – Drivers

テキストの39ページ

本文

ドライバは、個別のデバイスを管理するOSの中のコードの欠片である。
ドライバは、デバイスのための割り込みハンドラを供給し、デバイスに仕事を行わせ、デバイスに割り込みを生成させる。
他にも色いろある。
ドライバのコードは、それが管理するデバイスと共に協調して実行されるため、書くにはトリッキーになりがちである。
さらに、ドライバはデバイスのインターフェイスを理解しなければならず(例えばそのデバイスのI/Oポートは何用なのか等)、そのインターフェイスは複雑になりがちで、十分な資料が無かったりする。

ディスクドライバは、xv6の中でいい例となっている。
ディスクドライバは、ディスクからもしくはディスクへデータをコピーする。
ディスクのハードウェアは、伝統的にディスク上のデータを、番号が付けられた512バイトのブロック(セクタと呼ばれる)の並びとして提供する。
セクタ0は、最初の512バイトで、セクタ1は次の512バイトで、その後も続く。
ディスクのセクタを表現するため、OSはひとつのセクタに対応する構造体を持っている。
この構造体に保持されたデータは、しばしばディスクと同期していない。
ディスクからの読み込みがまだ完了してなかったり(ディスクはそのための処理を行なっているが、セクタの内容をまだ返していない)、もしくは更新されてるのにまだ書きこまれていなかったりする。
ドライバは、その構造体がディスクと同期してないとき、xv6がそのせいで混乱するような事がないことを確実にしなければならない。

感想

ドライバの概要についてです。
特に難しいところはないですね。

次の節でディスクドライバを例にとってコードを見ていくみたいです。

コメントを残す

メールアドレスが公開されることはありません。



※画像をクリックして別の画像を表示