ちょっと基本的な事項をメモ
詳解 Linux カーネル 3 版の chapter.13 から基本的な事項を備忘録代わりに。
- I/O デバイス、CPU、RAM 間で情報流通経路の確保が必要
- これを「バス」と呼ぶ
- PCI、ISA、EISA、MCA、SCSI、USB 等がある
- バスの種類
- ブリッジによって相互接続
- 以下の二つはメモリチップとの間の通信専用で高速
- フロントサイドバスは CPU を RAM コントローラに接続
- バックサイドバスは CPU を直接外部ハードウェアキャッシュに接続
- ホストブリッジはシステムバスとフロントサイドバスを結合
- I/O バス
- CPU と I/O デバイスを接続しているバス
- I/O バスが I/O デバイスに接続されるまでに 3 つの階層を経由する
- I/O ポート
- I/O インターフェース
- I/O コントローラ
- I/O ポート
- I/O 資源
- I/O 資源情報は resource 構造体で管理される
- 同じ種類の I/O 資源はツリーで管理される
- デバイスドライバは以下の 3 つの関数を利用できる。
- request_resource
I/O 資源の割り当て - allocate_resource
資源ツリーから利用可能な範囲を探索し、割り当て - release_resource
I/O 資源範囲の解放
- request_resource
- I/O インターフェース
- I/O コントローラ (デバイスコントローラ)
- I/O インターフェースから受け取った高水準な命令を電気信号に変換し、デバイスに送る
- デバイスから受け取った電気信号を適切に解釈、変換して I/O インターフェースを通じてステイタスレジスタの値を変更