ちょっと基本的な事項をメモ

詳解 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 アドレス
    • IBM PC アーキテクチャでは、8bit の I/O ポートが 65,536 個ある
    • 物理アドレス空間のアドレスへのマッピングが可能
    • I/O プログラミングの統一した手段を確保するために、デバイスの I/O ポートが専用のレジスタに構造化されている旨の記述があるが、何を指しているか不明
  • I/O 資源
    • I/O 資源情報は resource 構造体で管理される
    • 同じ種類の I/O 資源はツリーで管理される
    • デバイスドライバは以下の 3 つの関数を利用できる。
      • request_resource
        I/O 資源の割り当て
      • allocate_resource
        資源ツリーから利用可能な範囲を探索し、割り当て
      • release_resource
        I/O 資源範囲の解放
  • I/O インターフェース
    • I/O ポートに対応するデバイスコントローラとの間のハードウェア回路
    • I/O ポートの値をデバイスに対するコマンドやデータへと変換するインタプリタの役割
    • デバイスの状態の変化を検知し、ステータスレジスタの役目を持つ I/O ポートの更新も行なう
    • IRQ ラインを通して PIC に接続されることもある (割り込み要求の発行)
    • 専用 I/O インターフェース
      キーボード、グラフィック、ディスク、バスマウス、ネットワーク等
    • 汎用 I/O インターフェース
      パラレルポート、シリアルポート、PCMCIA、SCSI、USB 等
  • I/O コントローラ (デバイスコントローラ)
    • I/O インターフェースから受け取った高水準な命令を電気信号に変換し、デバイスに送る
    • デバイスから受け取った電気信号を適切に解釈、変換して I/O インターフェースを通じてステイタスレジスタの値を変更