- ベストアンサー
デバイスドライバについて
デバイスドライバというのがよくわかりません。デバイスをマシンに認識させるということですよね。なぜ、そのようなことができるのかがわかりません。 とくに、自分でデバイスドライバを書くというのは、どういうことなのでしょうか? 雑誌などでは、C言語で書かれていましたが、Java言語でも書く事はできるのでしょうか? 単純に、「なぜ書けるのでしょうか?」「何を見て書いているのでしょうか?(デバイスの仕様書のようなものがあるのでしょうか?)」 どうか教えてください。お願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
なぜ認識できるかというと、ある程度決まりがあるからです。 例えば,PCIカードには「お前は何者だ?」という質問をすることが出来, カードはこれに回答しなければいけない決まりになっています。 デバイスドライバは、OSがそのデバイスを使うためのサブルーチンの集まりと考えた方が判りやすいように思います。 例えば,OSが車というデバイスを制御できるとします。 この場合OSが呼ぶサブルーチンに窓を開けるという物があったとします。 この操作は車によって違いますから,車に合わせたデバイスドライバがあって、 ハンドルを回すとか、窓を開けるボタンを押すとか, 車に合わせた操作をするわけです。 自分でデバイスドライバを書くということは、 こういうようなサブルーチンを自分で書くことに相当します。 Javaで絶対に書けないとまでは言えないと思いますが, 最低でも何らかのJava以外で記述されたもが必要と思いますし, 実用的な物は実行速度や、JavaはJavaVMで実行されるといかそういうことが問題になって現実的に使えるものは 書けないと思います。 なぜ書けるかというと,そういうよう考えて作られた仕組みだからです。 もし、デバイスドライバが書けないとしたら、意味が無いです。 何を見ては,g_doriさんが書いている通りでしょうね。
その他の回答 (2)
- g_dori
- ベストアンサー率47% (330/699)
デバイスドライバ(以下ドライバ)は「デバイスをマシンに認識させる」と言うことが判っているなら、それがどういう事か考えてみたことがありますか? 「認識させる」と言う表現は、OSの仕様がドライバが無いとデバイスが見えないような仕組みになっているからでして、正確にはドライバには「通訳」という重要な仕事があります。 早い話、OSからは凡庸的なコマンドで、データをデバイスに流そうとします。しかし、デバイス単独でそのコマンドを理解することができません。そこでドライバという通訳が必要になります。 例えばOSは英語しか理解できず、デバイスは日本語、中国語、etcしか理解できない、と思って頂いてOKです。(英語がわかるデバイスはナイ) このままでは会話ができませんので通訳(ドライバ)が必要になる訳ですが、別段通訳が特定の人物である必要はありません。似たように通訳をこなしてくれれば別人でも問題ないことになります。 ドライバが訳を間違えたり、別の言語に訳してくれれば、当然デバイスは正常動作しません。(ドライバがガンガン更新されていく理由はこういうことです) この通訳の処理が気に食わなければ、「自作」ということになります。 結局のトコロメーカーの"人間"が作っているので、当然それを個人で作ることも可能です。 メーカーによってはソフトウェアインタフェース仕様書を一般公開している場合もありますし、マニュアルに記載するものもあります(大抵は制限付き公開で、正式なマニュアルは別売)。 それを利用できる方は自力で作ることが可能です。 UNIX関連の製品だとよくある話だと思いますよ。 で、JAVAに関しては・・・根本的に用途が異なると思いませんか?
- z80b
- ベストアンサー率44% (26/58)
Javaで書けるかわかりませんが。 デバイスドライバなんてOSの起動時にメモリ上に読み込まれて常駐し、 周辺装置からのハード的な割り込みによって呼び出される、OSに付属する プログラムの集合です。 詳しくはアドレスを書いておきますので、 そちらを見て下さい。