前回までは、デバイスとデバイスコントーラについて学びました。
今回は、デバイスドライバーとデバイス独立の入出力処理について理解していきます。
計算機システム概論 第27回「デバイスとファイルの管理:デバイスドライバーとデバイス独立の入出力処理」 - YouTube
本記事は、↑の動画の視聴録です。
デバイスドライバ
まずは、デバイスドライバについてまとめていきます。
デバイスコントローラはデバイスにより異なる。
前回、デバイスコントーラについて整理しましたが、デバイスにはデバイスコントローラがあり、デバイスコントーラを通じてデータのやりとりをするとありました。
このデバイスコントーラですが、デバイスによってレジスタの数も種類も動きも違いますが、特定のデバイスごとの処理をOSに組み込むわけにはいきませんよね。
どのデバイスが接続されようとも、デバイスの差分を吸収して動く必要があります。
デバイスドライバ
デバイスドライバの定義から確認しましょう。
デバイスドライバとは、ハードウェアデバイスの低レベルの入出力操作を管理するカーネルモジュールのことです。デバイスドライバは、カーネルがデバイスとのインタフェースを取るために呼び出すことのできる標準的なインタフェースで書かれています。 Oracle デバイスドライバの記述
デバイスドライバは、一般的にはデバイスの開発者側でデバイスとともに提供し、動的にOSのカーネルにロードされます。
デバイスドライバテーブル
さて、デバイスドライバについて理解できたので、どのようにデバイスドライバとデバイスが管理されているか?について触れます。
デバイスドライバとデバイスは、デバイスドライバテーブルによって管理されています。
まとめ
今回は、ざっとデバイスドライバについて理解してみました。
デバイスのIO周りは、バッファリングやポーリングなど周辺知識がいろいろあったのですが、あまり興味がわかなかったので、知りたくなったら勉強しようと思います。
僕から以上。あったかくして寝ろよー
参考書籍
デバイスドライバの記述 https://docs.oracle.com/cd/E24845_01/pdf/E22201.pdf