I/Oアドレス
I/Oアドレスは、コンピューターのCPUが周辺機器と通信するために使用する数値識別子です。コンピューター上のすべてのI/Oポートには、USBポート、イーサネットジャック、HDMIポートなど、それぞれを他のすべてのポートと区別する固有のアドレスがあります。I/Oアドレスを分けることで、CPUはどの周辺機器かを把握し、それらと直接やり取りできます。
コンピューターのCPU上で実行されているプログラムが周辺機器と直接通信する必要がある場合、その周辺機器のI/Oアドレスにコマンドとデータを送信します。周辺機器は、同じアドレスに情報を送り返すことで、コンピューターのCPUに応答できます。たとえば、文書を印刷するとき、CPUは文書と印刷設定をプリンターのI/Oアドレスに転送します。プリンターはそこでその要求を処理し、文書を印刷できます。
初期のコンピューターでは、I/Oポートの種類に基づく固定アドレスを使ってI/Oポートを割り当てることがよくありました。たとえば、コンピューターの最初のシリアルポートの標準アドレスは、常に0x03F8でした。これらのアドレスはシステムメモリとは別になっており、I/Oデバイスとの間でデータを送受信するには専用のCPU命令が必要でした。現在のコンピューターでは、メモリーマップドI/Oと呼ばれる、より効率的な方法が使われています。この方法では、メインシステムメモリと同じアドレス空間からI/Oポートにアドレスを割り当てます。アドレス空間を共有すると、システムメモリにアクセスする任意のCPU命令でI/Oデバイスにもアクセスできます。現在はオペレーティングシステムがI/Oアドレスを管理するため、アプリケーションは、特定の事前定義アドレスにデータを送信する代わりに、システムのAPIを使って周辺機器とやり取りできます。これにより、信頼性が大幅に向上し、競合の発生頻度が減少します。
知識をテストする