Linux大学Linux学部LPIC学科講師のLPIC猿です。

本日の講義は「I/Oポートアドレス]です。

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

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


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

I/Oポートアドレスは16ビット分のアドレスが利用され、通常16進数(0x0000~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


上記のように表示されました。
Linux大学Linux学部LPIC学科講師のLPIC猿です。

本日の2限は「IRQについて]です。

IRQは、CPUがキーボードやマウスなど外部のデバイスと通信
するために使用する割り込み要求のことです。

割り込み要求とは、パソコンのキーボードやマウスがCPUを
呼び出すときに起きるものです。呼び出されたCPUは要求を
受け付けるかどうかを判断して、受け付ける場合は、
現在実行中の処理を中断して要求された処理を優先して行います。

複数のデバイスで同じIRQを重複して使用することはできません。
システムを正常に動作させるには、割り込み番号を各デバイスに
割り当てる必要があります。通常、割り込み番号は自動で割り当て
られるが、もし重複した場合はBIOS設定画面などで手動設定します。

IRQ番号は、0~15までの16個が用いられています。
この番号は、CPUが様々な処理をしている時に、割り込みを要求
する際の整理番号になります。マウスやキーボードなど、すぐに
処理の必要な機器に番号が割り当ています。基本的には、自動的に
割り当てられてますが、もし自動で割り当てられなかった場合は、
手動で割り当てる必要があり、このときは重複しないように気を
つけなければなりません。

もし同時に要求があった場合には、優先順位の高いほうを先に
処理します。

どのように割り当てられているかを以下を参照してください。

0 システムタイマー
1 キーボード
2 スレーブの割り込みを転送
3 シリアルポート(COM2)
4 シリアルポート(COM1)
5 パラレルポート(LPT2)
6 フロッピーディスクドライブ
7 パラレルポート(LPT1)
8 リアルタイムクロック
9 未使用
10 未使用
11 未使用
12 PS/2マウス
13 数値演算プロセッサ
14 プライマリIDE
15 セカンダリIDE


Linuxでは、以下コマンドで確認できますので
実行して、ちゃんと表示されるかを確認してくださいね。

# cat /proc/interrupts

CPU0
0: 55114925 XT-PIC timer
2: 0 XT-PIC cascade
3: 1168042 XT-PIC eth0
4: 488 XT-PIC uhci_hcd
5: 2759 XT-PIC uhci_hcd
7: 0 XT-PIC uhci_hcd
8: 1 XT-PIC rtc
10: 5 XT-PIC ehci_hcd
14: 1355532 XT-PIC ide0
15: 60 XT-PIC ide1
NMI: 0
LOC: 0
ERR: 0
MIS: 0


以前は割り当てられるIRQは、16個でしたが、最近はマルチプロセッサ環境
に対応した割り込みコントローラであるAPICにより、16個以上割り当て
ることが可能となっています。
Linux大学Linux学部LPIC学科講師のLPIC猿です。


本日の1限は「デバイスの確認」です。


デバイスは「/proc」以下のファイルで確認できます。
主なファイルをあげます。/procはメモリ情報を参照しているので、
vi等では開かずに、catコマンド等で開いてくださいね。


1.CPUの情報
/proc/cpuinfo

2.IRQの情報
/proc/interrupts

3.PCIの情報
/proc/pci

4.SCSIの情報
/proc/scsi/scsi


Linuxではハードウェア(マウスなど)をデバイスファイルとしてあつかいます。
/dev以下に様々なファイルが存在してますので、確認してくださいね。