Windows システム情報の I/O とメモリ

Windows システム情報の I/O とメモリ

Windows システム情報 Msinfo32 で I/O とメモリを解釈する方法は? I/O アドレスは、I/O デバイス レジスタをマップしたメモリの場所を表しますか? また、メモリ内のアドレスはどうですか? 物理メモリ アドレスがある場合、それらは毎回異なるはずですよね?

答え1

「I/O」の下に表示されるのは「アドレス」ですが、仮想アドレスでも物理メモリ アドレスでもありません。これらは I/O ポート空間にあります。これらは IN や OUT などの特別な命令に対してのみ意味を持ちます。

「メモリ」ページには、物理​​アドレス空間内のアドレスが表示されます。これは、RAM が存在するアドレス空間と同じです。これらは、マザーボード上のさまざまな I/O デバイスとその他の特定のデバイスによって定義される「レジスタ」とバッファ空間のアドレスです。ドライバは、OS がこれらの物理アドレスに関連付ける仮想アドレスを参照して、これらのデバイスと通信します。

バス アドレス レジスタの PCI 標準に準拠するデバイスのポート アドレスとメモリ アドレスは、どちらも OS によって構成可能です。ただし、この構成はすべてブート時に行われ、ほとんどのデバイスは、ブートごとに同じアドレスになります。一部のデバイスは、レガシーな理由から既知のアドレスに割り当てられます。その他のデバイス (レガシー シリアル ポートやパラレル ポートなど) は、LPC バス上にあります。プログラム的には ISA のように見えますが、電気的にはシリアル バスであり、ISA と同様にソフトウェアで構成することはできません。これらのデバイスは、アドレスにハードワイヤードされています。

ちなみに、I/O ポート空間は、古いアーキテクチャ、または少なくとも古いルーツを持つアーキテクチャ (x86 など) の遺物です。ほとんどの最新アーキテクチャでは、そのようなものは実装されておらず、すべてが物理メモリ空間にあります。

関連情報