2

スキャン コードとしてのキーボード入力は、割り込み 09 IRQ1または類似のものを呼び出すか、セグメント0040hの BIOS キーボード バッファに直接アクセスすることで取得できます。

別のキーボード ドライバーが必要なのはなぜですか? または、キーボードドライバー自体がOSに対して上記のいずれかを行いますか?

私が意味するのは、BIOSキーボードバッファまたはいくつかの割り込みルーチンができるときにキーボード入力を取得することです.なぜ「キーボードドライバ」を書く必要があるのですか?なぜなら、minixのようないくつかのOSでは、そのOSのドライバのリストに別のキーボードリバーがあるからです. ?

4

2 に答える 2

1

一般的に言えば、最近のOSには、カーネルモードとユーザーモードの違いがあります。カーネルにはより高い特権があり、そのモードで実行できるのは特殊なコードのみです。ハードウェアリソースへのアクセスは、通常、カーネルモードのドメインです。一方、ユーザーモードコードは、CPUがこれらのリソースにアクセスすることを防ぎます。

あなたが話しているOSはわかりませんが、本質的にあなたが話しているドライバーはこの特殊なコードです。ユーザーモードコードはリソースに直接アクセスできないため、ドライバーと通信する必要があります。

区別がなく、したがってすべてのコードがハードウェアリソースにアクセスできる、MS-DOSなどのより単純なまたは古いOSを検討する場合。しかし、これを可能にする最新の汎用OSは知りません。

これは、カーネルモデルプログラミングのアイデアを説明するための非常に優れたウィキペディアの記事です。

Windows(および最新のオペレーティングシステム)では、「ユーザーモード」で実行されているコードと「カーネルモード」で実行されているコードに違いがあります。この章では、いくつかの違いを指摘します。まず、Intel CPUには、実行中のコードで使用可能な命令とメモリのタイプを指定するリングと呼ばれる動作モードがあります。4つのリングがあります:

  • リング0(カーネルモードとも呼ばれます)は、すべてのリソースに完全にアクセスできます。これは、Windowsカーネルが実行されるモードです。
  • リング1と2は、アクセスレベルに応じてカスタマイズできますが、仮想マシンが実行されていない限り、通常は使用されません。
  • リング3(ユーザーモードとも呼ばれます)では、リソースへのアクセスが制限されています。

これは、すべてのプログラムがカーネルモードで実行されている場合、相互にメモリを上書きし、クラッシュしたときにシステム全体を停止させる可能性があるためです。

于 2012-01-14T04:14:37.100 に答える
0

ドライバーは、OSが実数と虚数の両方のデバイスと対話するために使用する抽象化のメカニズムであるため、ドライバーの要件があります。

乱数ジェネレーターである/dev/randomについて考えてみます。OSは、そのデバイスから「読み取り」、乱数を取得できることを認識しています。乱数はどのように生成されますか?OSは気にしません。そのプロセスは、ドライバーによって分離され、抽象化されます。疑似ランダムアルゴリズムである可能性があります。マザーボード上の特別なデバイスである可能性があります。ラッシュアワーの交通を監視しているビデオカメラである可能性があります。知るか。重要なのは、OSはそれが「どのように」行われるかを気にせず、さまざまなドライバーを使用することで、実際のまたは合成のほとんどすべてのハードウェアと通信できることだけを知っているということです。

OSを作成する場合と同じように、キーボードバッファからメモリをロードするだけでなく、コードを1回作成してサブルーチンを呼び出す場合と同様に、ドライバは同様のタスクを実行する高レベルの抽象化メカニズムです。

于 2012-01-14T04:33:36.943 に答える