私はオペレーティング システムを初めて使用します。アドレス空間の特定の部分が I/O 用に予約されていると言われているとき、それが何を意味するのか正確に理解できませんでした。
4GB RAM がある場合、そのアドレスの一部が I/O 用に予約されているということですか?
readなどの命令の後にそのアドレスが使用されている場合、CPU はそれを i/o と見なしますか?
誰かが私の理解を明確にしてくれれば、大きな助けになるでしょう。
私はオペレーティング システムを初めて使用します。アドレス空間の特定の部分が I/O 用に予約されていると言われているとき、それが何を意味するのか正確に理解できませんでした。
4GB RAM がある場合、そのアドレスの一部が I/O 用に予約されているということですか?
readなどの命令の後にそのアドレスが使用されている場合、CPU はそれを i/o と見なしますか?
誰かが私の理解を明確にしてくれれば、大きな助けになるでしょう。
従来、一部のコンピューターには個別の IO バスとメモリ バスがありました。メモリ バスはメモリに接続され、IO バスはさまざまな周辺機器に接続されていました。
ただし、さまざまな理由 (アクセス速度、別の IO バスの製造コストなど) から、一部の周辺機器はメモリにマップされていました (高速グラフィックスには高速アクセスが必要なビデオ カードなど)。これは、それらがメモリのようなデバイスではない (または部分的にのみ) にもかかわらず、メモリバスに接続されていることを意味します。
たとえば、マイクロコントローラでは、通常、メモリと IO の両方に使用される共通のバスがあります。その理由は、これらのデバイスの CPU ピンは限られているため、高速化を必要としないためです (共有 IO/メモリ バスを使用している場合、パフォーマンスは制限されます)。
質問に答えるには:
「IO 用に予約されている」: これは、これらのメモリ アドレスに対して、IO デバイスをプロセッサに接続する必要があることを意味します。たとえば、ATMEL マイクロコントローラの場合、最初の 64 バイトは IO 用に予約されており、(メモリの読み取り/書き込み命令を使用する代わりに) 特別な命令を使用してこれらに簡単にアクセスできます。
4GB のメモリ: メモリの論理マッピングと物理マッピングを混同しないでください。PC の場合、2 つの間の翻訳を行うようにプログラムできる翻訳デバイスがあります。これは、4 GB の物理 RAM を論理アドレス空間のどこにでもマップできることを意味します (つまり、4 GB よりもはるかに大きい)。つまり、IO 用に予約されているアドレス空間 (上記のビデオカード アドレスなど) の場合、メモリは失われず、単にアドレス空間の別の場所にマップできます。
IO アドレス空間でメモリの読み取り/書き込み操作を使用すると、ペリフェラルの読み取り/書き込みが発生します。CPU は通常、そのアドレスにマップされた IO デバイスがあることを知りません。要求されたアドレスをバスに送信し、値を読み取ります (この場合、メモリではなくペリフェラルによって与えられます)。