サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
ノーベル賞
d241445.hosting-sv.jp
56メモリ管理(PagedPoolとNonPagedPool) ドライバのメモリ管理は重要かつ複雑で、システムクラッシュの原因になるので、メモリを扱う際には十分に注意する必要があります。Windowsのメモリは仮想メモリ構造です。OSのデータにアクセスするために32ビットポインタを使用しているため、2の32乗、つまり4GBのアドレス空間が必要です。メモリの実際の大きさは256MBや512MBですが、仮想メモリの概念により4GBのメモリがあるかのように処理を行うことが出来ます。デバイスドライバからのメモリへのアクセスは全て仮想アドレスを使います。図1はWindowsの仮想アドレスの構造を表しています。 図1 メモリの使い方によってプライベート空間と共有空間の2種類のメモリがあります。ユーザーモードのアプリケーションはプライベート空間を使用します。カーネルモードのプロセスは共有空間を利用します
スケジューリングと割り込み要求レベル(IRQL) Windows NTで実行の優先順位は割り込みとスケジューリングの二つに分けられます。割り込み要求レベル(IRQL:Interrupt ReQuest Level)を表1に示します。IRQLは高ければ高いほど、実行の優先順位も高くなります。例えば、PROFILE_LEVELの処理が行われている際、CLOCK1_LEVELの処理要求があったとすると、CLOCK1_LEVELの処理は割り込んで実行されます。スケジューリングはPASSIVE_LEVEL内で行われるため、割り込みより優先順位が低くなります。 表1.割り込み要求レベル 割り込みとスケジューリングは別物という事を覚えておく必要があります。また、ハードウェアの割り込みの優先順位はソフトウェアの割り込みより高いです。デバイスドライバはDIRQL以下の割り込みレベルを使用します。ドライバは
誰でもわかるデバイスドライバ講座 サイエンスパークでは、新入社員の研修として、デバイス ドライバ開発に携わるための 学習を行っております。この研修では、デバイス ドライバの仕組みを理解した上で プログラミングを行う目的のほかに、初心者でもデバイス ドライバ開発ができるための 資料を作成する目的もかねております。 今回、その研修にて作成した資料を元に「誰でもわかるデバイス ドライバ講座」 と題しまして、その内容を順次公開してまいります。 但し、デバイスドライバ開発の10年選手、20年選手が作成したものでは無い為に、 ビギナーには分かりやすい反面、経験者には不適切と思われる部分もあるかと存じま す。 順次にレベルアップを計りますので、御了承下さい。 目次 レポート1: PCの概要 レポート2: ドライバのインストールとアンインストール レポート3: ドライバの種類 レポート4: ドライ
IRPの構造 IRP(I/O Request Packet)はアプリケーションからI/O要求が発生した際に、I/Oマネージャが作成する構造体です。IRPは適当なドライバのディスパッチルーチンを呼び出す時に、引数として渡されます。IRP構造体は図1のようにヘッダとスタックロケーションの二つの部分が存在します。スタックロケーションの数は、I/O要求に関わるドライバの階層と関係しています。例えば、上位、中間、物理の3つのドライバを介して一つのI/O要求を処理する場合、3つのスタックロケーションが存在します。 図1 IRP構造体 IRPはオブジェクトではなく、データのパケットで、その構造体は非常に複雑な形をしています。IRPは非ページプールメモリに作成されます。IRPのヘッダの値、大きさはドライバの階層に関係なく固定しています。次にIRPの簡略した構造体と、よく使うフィールドについて示します。 t
このページを最初にブックマークしてみませんか?
『d241445.hosting-sv.jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く