12-LPIC「level1」

LPIC|level 1【システムアーキテクチャ(1)】

目標

  • LPICについて概要を確認する
  • BIOSとUEFIについて理解する
  • Linuxが利用するデバイスのリソースについて理解する
  • IRQ(Interrupt Request)について理解する

LPIC

LPICとは

LPIC(Linux Professional Institute Certification)は、Linuxオペレーティングシステムに関する知識とスキルを証明するための資格認定制度です。LPICの認定は、3段階のレベルに分かれています。

  1. LPIC-1: 初級の資格で、Linuxの基本的なシステム管理、コマンドラインの使用、パッケージ管理、ユーザー管理、ネットワーク設定などの基本的なスキルを証明します。
  2. LPIC-2: 中級の資格で、より高度なシステム管理スキル(ネットワークサービス、セキュリティ、システムバックアップ、パフォーマンスチューニングなど)を証明します。
  3. LPIC-3: 上級の資格で、Linuxシステムの高度な管理、仮想化、クラウドサービス、セキュリティ、ネットワークアーキテクチャなどの専門的なスキルが必要です。

BIOSとUEFI

BIOSUEFIは、コンピュータの起動時に最初に実行されるソフトウェアで、ハードウェアとオペレーティングシステム(OS)の間でやり取りを行います。それぞれの役割は似ていますが、技術的には異なる点がいくつかあります。

BIOS(Basic Input/Output System)

BIOSは、パソコンが起動する際に最初に実行されるファームウェアです。主な役割は、コンピュータのハードウェア(CPU、メモリ、ストレージデバイスなど)を初期化して、オペレーティングシステム(OS)が起動できる状態を作り出すことです。

  • 起動プロセス: BIOSは、まずハードウェアをテストして正常性を確認し、その後ブートデバイス(ハードディスク、SSD、CD/DVDドライブなど)を探してOSを起動します。
  • 制約: BIOSは古い技術であり、パーティションテーブルに「MBR(Master Boot Record)」を使用します。このMBRは最大2TBのディスクしかサポートせず、1つのディスクに最大4つのプライマリパーティションしか作れません。
  • ユーザーインターフェース: 通常、BIOSの設定画面はテキストベースで、マウスを使うことはできません。キーボードで操作します。

パーティションテーブルは、ハードディスクやSSDのストレージデバイス内で、データがどのように区切られるかを管理するための情報を格納する部分です。簡単に言うと、ストレージデバイスの「地図」のようなものです。これにより、OSはディスク上の異なる領域を区別し、どこにデータが保存されているのかを把握できるようになります。

MBR(Master Boot Record)

MBRは、パーティションテーブルの最も古い形式で、1980年代から使用されています。これまでの多くのPCで標準として使われていましたが、いくつかの制約があります。

  • ディスク容量制限: MBRは最大2TBのディスク容量しかサポートしません。それ以上の容量のディスクを使用すると、MBRでは正しく認識できません。
  • パーティション数制限: MBRでは最大4つのプライマリパーティションを作成できます。これ以上のパーティションが必要な場合は、1つのプライマリパーティションを拡張パーティションに変換し、その中に論理パーティションを作る必要があります。
  • ブート方式: MBRは、BIOSベースのシステムで使用されます。これにより、PCの起動に関する情報(ブートローダーなど)もMBRに格納されます。

UEFI(Unified Extensible Firmware Interface)

UEFIは、BIOSの後継として登場した新しいファームウェアで、より高機能で柔軟性があります。UEFIは、BIOSに比べて多くの利点があります。

  • 起動プロセス: UEFIは、OSを起動するためのより高度な方法を提供します。UEFIはBIOSのようにハードウェアを初期化するだけでなく、ネットワークを使った起動や、グラフィカルなインターフェースを提供します。
  • パーティションサポート: UEFIは「GPT(GUID Partition Table)」という新しいパーティション方式を使用します。これにより、2TBを超えるディスクのサポートや、無制限に近い数のパーティションを作成できるようになります。
  • セキュリティ: UEFIには、セキュアブートという機能があり、信頼できるOSだけが起動できるようにすることで、マルウェアや不正なブートローダーを防止することができます。
  • ユーザーインターフェース: UEFIは、BIOSと比べてより直感的でグラフィカルなインターフェースを提供し、マウスで操作することもできます。

GPT(GUID Partition Table)

GPTは、MBRの制限を解消するために登場した新しいパーティションテーブル形式で、より多機能で柔軟です。UEFI(Unified Extensible Firmware Interface)と密接に関連しており、現代的なPCやサーバーでは通常、GPTが使用されています。

  • ディスク容量の制限: GPTは、理論上で最大9.4ZB(ゼタバイト、1ZB = 1兆GB)という非常に大きな容量までサポートしています。現実的には、数TB〜数百TBのディスクでの使用が可能です。
  • パーティション数の制限: GPTでは、最大128個のパーティションをサポートします。これにより、より多くのパーティションを自由に作成できるようになります。
  • セキュリティ: GPTには「バックアップパーティションテーブル」があります。これにより、パーティションテーブルが破損した場合でも、バックアップから回復できます。
  • UEFIとの互換性: GPTは、UEFIブート方式を前提としているため、最新のPCやサーバーではGPTとUEFIの組み合わせが標準です。

Linuxが利用するデバイスのリソース

Linuxでは仮想ファイルシステムの一部である「/procディレクトリ」に、機器に接続されているデバイスのリソース(ハードウェアリソース)の情報を格納しています。

/procディレクトリは、Linuxシステムにおける仮想ファイルシステムの一部で、カーネルやシステムの動作に関する情報を提供するために使用されます。/procディレクトリ内のファイルは、実際のディスク上にデータとして保存されているわけではなく、カーネルやシステムの状態をリアルタイムで反映する仮想ファイルであるため、システムの状態を動的に監視したり、設定を確認したりするために利用されます。

/procディレクトリ内の主要なファイルとサブディレクトリ

  • /proc/cpuinfo
    • CPU(プロセッサ)に関する情報が格納されています。具体的には、CPUのモデル名、コア数、アーキテクチャ、キャッシュサイズ、周波数などが含まれます。
  • /proc/meminfo
    • メモリの使用状況や統計情報が表示されます。総メモリ量、使用中メモリ、空きメモリ、バッファキャッシュなどが確認できます。
  • /proc/uptime
    • システムの稼働時間とアイドル時間を秒単位で表示します。最初の値がシステムの稼働時間、2番目の値がアイドル時間です。
  • /proc/partitions
    • システムに接続されているディスクやパーティションの情報を表示します。ディスクの名前、サイズ、ブロック数などが含まれます。
  • /proc/ioports
    • I/Oポートの使用状況を表示します。これは、デバイスがどのI/Oポートを使用しているかを示すものです。通常、ハードウェアの設定やリソース管理に利用されます。
  • /proc/devices
    • 現在のシステムで使用されているデバイスの種類(ブロックデバイス、キャラクターデバイスなど)が表示されます。
  • /proc/diskstats
    • 各ディスクデバイスのパフォーマンス統計が表示されます。各ディスクの読み取り/書き込み回数、データ量、エラー数などが確認できます。
  • /proc/net
    • ネットワークに関する情報が格納されるディレクトリで、ネットワーク接続の状況や統計が表示されます。例えば、/proc/net/tcpではTCP接続の状態が確認できます。
  • /proc/pci
    • PCIバスに接続されているデバイスに関する情報が表示されます。各PCIデバイスの詳細(ベンダーID、デバイスIDなど)が含まれます。
  • /proc/interrupts
    • システムの割り込み(IRQ)に関する情報が表示されます。どのCPUコアがどの割り込みを処理しているか、また各割り込みがどれだけ発生しているかなどが確認できます。

IRQ(Interrupt Request)は、コンピュータシステムにおいて、ハードウェアデバイスやソフトウェアからの割り込み信号を指します。割り込みは、CPUが現在行っている処理を一時中断し、優先度の高い処理(例:ハードウェアデバイスからの要求)を行うためのメカニズムです。

  • /proc/usb
    • 接続されているUSBデバイスに関する情報が表示されます。USBデバイスの種類、ステータス、デバイスの識別子などが確認できます。
  • /proc/sys
    • システムのカーネルパラメータを管理するための設定ファイルが格納されています。たとえば、/proc/sys/net/ipv4/ip_forwardでは、IP転送の設定を確認・変更できます。これにより、システムのネットワーク設定やセキュリティ設定を動的に変更できます。

IRQ(Interrupt Request)

IRQ(Interrupt Request)は、コンピュータシステムにおいて、ハードウェアデバイスやソフトウェアからの割り込み信号を指します。割り込みは、CPUが現在行っている処理を一時中断し、優先度の高い処理(例:ハードウェアデバイスからの要求)を行うためのメカニズムです。

IRQの基本概念

コンピュータのCPUは、1つの命令を順番に実行するシーケンシャルな処理を行います。しかし、外部のハードウェアや周辺機器からの「割り込み」信号が発生すると、CPUはその処理を中断して、優先度の高い仕事を行います。割り込みが処理されると、元の作業に戻ります。これにより、例えばキーボードの入力やマウスの動き、ネットワークパケットの受信などが即座に反映されることが可能になります。

IRQの仕組み

  1. IRQライン
    コンピュータのハードウェアは、一定の数のIRQラインを通じて、CPUに割り込みを通知します。これらのIRQラインは、特定のハードウェアデバイスに関連付けられていて、デバイスが割り込みを送ると、CPUはその割り込みを受け取ります。
  2. 割り込み要求(IRQ)番号
    各割り込みには番号(IRQ番号)が付けられていて、例えば「IRQ0」「IRQ1」といった形です。これによって、どのデバイスが割り込みを発生させたかが特定されます。IRQ番号は、通常0〜15の範囲で定義されています(古いシステムでは16個のIRQラインがありました)。
  3. 割り込みハンドラ
    割り込みが発生すると、システムは対応する割り込みハンドラ(またはISR, Interrupt Service Routine)を呼び出して、割り込みを処理します。この処理が完了した後、CPUは元の処理に戻ります。
  4. 割り込みの優先度
    割り込みには優先度があります。CPUは、通常、最も優先度の高い割り込みから処理します。たとえば、ハードディスクからの読み取り要求よりも、キーボードの入力の方が優先されることがあります。

IRQライン(Interrupt Request Line)は、コンピュータシステムにおける割り込み(IRQ)信号の経路であり、ハードウェアデバイスがCPUに対して「割り込みが発生した」と通知するための通信経路です。

IRQ番号とその割り当て

伝統的に、以下のようにIRQ番号が割り当てられています(これは、古いPCのアーキテクチャでの標準例です)。

  • IRQ0: システムタイマー(タイムクリティカルな処理)
  • IRQ1: キーボード
  • IRQ2: 2番目の割り込みコントローラ(ピクチャルーチン)
  • IRQ3: COM2(シリアルポート2)
  • IRQ4: COM1(シリアルポート1)
  • IRQ5: サウンドカードやその他の周辺機器
  • IRQ6: フロッピーディスクコントローラ
  • IRQ7: パラレルポート(プリンター)
  • IRQ8: RTC(リアルタイムクロック)
  • IRQ9: ACPI(Advanced Configuration and Power Interface)
  • IRQ10: NIC(ネットワークカード)
  • IRQ11: サウンドカード(一般的に使われる場合)
  • IRQ12: マウス(PS/2)
  • IRQ13: FPU(浮動小数点ユニット)
  • IRQ14: IDE(ハードディスクコントローラ)
  • IRQ15: IDE(セカンダリコントローラ)

IRQの管理と競合

多くのデバイスが同じIRQラインを使うことができないため、IRQ競合が発生する可能性があります。たとえば、同じIRQ番号を持つ2つのデバイスが同時に割り込みを発生させると、正しく処理されなくなり、システムが不安定になることがあります。

IRQ競合は、特に古いPCや周辺機器で問題になることがありました。モダンなコンピュータでは、IRQの管理が改善され、ピン数の増加PCI(Peripheral Component Interconnect)バスの導入により、IRQ競合を回避する方法が増えました。

/proc/interrupts で IRQを確認

Linuxでは、システムのIRQの使用状況を確認するために、/proc/interruptsファイルを参照することができます。このファイルには、各CPUがどのIRQラインをどれだけ処理したか、またそれぞれのデバイスがどのIRQを使っているかの情報が表示されます。

IRQの状況は「cat /proc/interrupts」コマンドで確認できます。

今回は以上になります。

「python」おすすめ書籍 ベスト3 | 現役エンジニア&プログラミングスクール講師「python」の学習でお勧めしたい書籍をご紹介しています。お勧めする理由としては、考え方、イメージなどを適切に捉えていること、「生のpython」に焦点をあてて解説をしている書籍であることなどが理由です。勿論、この他にも良い書籍はありますが、特に質の高かったものを選んで記事にしています。ページの下部には「おすすめのITスクール情報」「おすすめ求人サイト」について情報を掲載中。...

ブックマークのすすめ

「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。

「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】について解説している記事です。削除方法も掲載しています。...
【パソコン選び】失敗しないための重要ポイント | 現役エンジニア&プログラミングスクール講師【パソコン選び】失敗しないための重要ポイントについての記事です。パソコンのタイプと購入時に検討すべき点・家電量販店で見かけるCPUの見方・購入者が必要とするメモリ容量・HDDとSSDについて・ディスプレイの種類・バッテリーの持ち時間や保証・Officeソフト・ウィルス対策ソフトについて書いています。...