I/Oポートアドレス | Linux初心者の入門と基礎、Linux大学学長りなっくま先生のブログ

I/Oポートアドレス

コンピュータ内部で、CPUが周辺機器にデータを送受信するために使う
窓口にI/Oポートというものがあります。



Iが「Input」、Oが「Output」で「入出力ポート」とも呼ばれており、
それぞれのI/Oポートは固有のI/Oポートアドレスを持ち、識別されています。



CPUは外部デバイスに直接アクセスせず、中間デバイスであるチップセットを通してデータ交換を行います。
I/Oポートアドレスとは、CPUと外部デバイスがデータ入出力を行うために、マザーボードのチップセット上に置かれているポートのアドレスのことです。



I/Oポートアドレスは16ビット分のアドレスが利用され、通常16進数(0×0000~0xffff)で表記されます。



なお、I/Oポートアドレスの割り当て情報については/proc/ioportsを参照して入手することができます。



では、I/Oアドレスの割り当てを確認します。
以下コマンドにて確認することができます。



# cat /proc/ioports

0000-001f : dma1
0020-0021 : pic1
0040-0043 : timer0
0050-0053 : timer1
0060-006f : keyboard
0070-0077 : rtc
0080-008f : dma page reg
00a0-00a1 : pic2
00c0-00df : dma2
00f0-00ff : fpu
01f0-01f7 : ide0
03c0-03df : vga+
03f6-03f6 : ide0
03f8-03ff : serial
08c0-08df : 0000:00:1f.3
9ca0-9cbf : 0000:00:1d.2
9ca0-9cbf : uhci_hcd
9cc0-9cdf : 0000:00:1d.1
9cc0-9cdf : uhci_hcd
9ce0-9cff : 0000:00:1d.0
9ce0-9cff : uhci_hcd
ac00-acff : 0000:06:05.0
b000-bfff : PCI Bus #05
c000-cfff : PCI Bus #04
d000-dfff : PCI Bus #03
e000-efff : PCI Bus #01
e000-efff : PCI Bus #02
ec00-ecff : 0000:02:08.0
fc00-fc0f : 0000:00:1f.1
fc00-fc07 : ide0


上記のように表示されました。