Product SiteDocumentation Site

B.3. コンピュータ内部の仕組み、さまざまな層の関係性

コンピュータは抽象的なものとして考えられる場合が多く、外から見えるインターフェースは内部の複雑さに比べてずっと簡単なものです。この複雑さの原因は関連する要素が多いことです。しかしながら、これらの要素は層状構造をしており、ある層が影響を与えたり影響を受けたりするその層の真上と真下の層だけです。
すべてがうまく動作している限り… エンドユーザは各層の詳細を理解する必要はありません。「インターネットにつながらない!」などの問題に直面した場合、最初に問題の原因になっている層を特定することが重要です。ネットワークカード (ハードウェア) は動いていますか? コンピュータはネットワークカードを認識していますか? Linux カーネルはネットワークカードを認識していますか? ネットワークパラメータは適切に設定されていますか? これらの質問により、コンピュータは適切な層に分割され、問題の本質的な原因になっている層を特定することが可能です。

B.3.1. 最下層、ハードウェア

基本的なことを思い出すことから始めましょう。何よりもまず、コンピュータはハードウェア部品の集合体である、という点です。ほとんどの場合、主要基板 (マザーボードとして知られています) があり、これには 1 台 (または複数台) のプロセッサ、RAM、デバイスコントローラ、(他のデバイスコントローラを搭載する) 拡張ボード用の拡張スロットが取り付けられています。特に注意すべきコントローラはハードディスクなどのストレージデバイスを接続する IDE (パラレル ATA)、SCSI、シリアル ATA、です。その他のコントローラには、多くのさまざまなデバイス (ウェブカメラから温度計、キーボードからホームオートメーションシステム) をホストすることが可能な USB と IEEE 1394 (Firewire) があります。これらのコントローラには複数のデバイスを接続することが可能です。このため、コントローラによって取り扱われる完全なサブシステムは「バス」と呼ばれます。拡張ボードには、グラフィックカード (モニタ画面をここに接続します)、サウンドカード、ネットワークインターフェースカード、などがあります。一部のマザーボードはいくつかの機能をあらかじめ備えており、拡張カードを必要としません。

B.3.2. スタート係、BIOS や UEFI

ハードウェアを制御するソフトウェアがなければ、ハードウェアをまともに動作させることはできません。オペレーティングシステムとアプリケーションは、ハードウェアを制御したりハードウェアと情報をやり取りする機能を提供します。同様に、これを行うためにはハードウェアを正常に機能させる必要があります。
ハードウェアとソフトウェアの共生関係はひとりでに発生するものではありません。コンピュータ起動時には、いくつかの初期設定が必要です。この初期設定を担当しているのが BIOS および UEFI です。BIOS と UEFI はマザーボードに組み込まれた小さなソフトウェアで、起動中に自動的に実行されます。BIOS と UEFI の最も重要な役割に、ハードウェアの制御を引き継ぐソフトウェアを検索する役割があります。BIOS の場合、通常これはブートセクタ (マスターブートレコードMBR として知られています) を備えた最初のハードディスクを検索し、ブートセクタを読み込んで、ブートセクタに収められているソフトウェアを実行します。BIOS の関与する動作はここまでです (次回起動時まで関与しません)。UEFI の場合、後に起動する EFI アプリケーションが収められている専用の EFI パーティションを見つけるためにディスクを走査します。
ブートセクタ (または EFI パーティション) には、別のソフトウェアが含まれます。これはブートローダと呼ばれ、オペレーティングシステムを探して実行するためのものです。ブートローダはマザーボードに組み込まれているのではなく、ディスクから読み込まれます。このため、BIOS よりも多くの機能を持っています。BIOS 自身がオペレーティングシステムを読み込まないのはこれが理由です。たとえば、ブートローダ (Linux システムでは GRUB を使うことが多いです) は利用できるオペレーティングシステムを表示し、ユーザに起動するオペレーティングシステムを尋ねることが可能です。通常、タイムアウトとデフォルトの回答が設定されています。ここでユーザはカーネルに渡すパラメータを追加したりすることも可能です。最終的に、カーネルが見つかり、メモリに読み込まれ、実行されます。
さらに BIOS/UEFI は多数のデバイスを検出して初期化します。言うまでもなくこのデバイスには、IDE/SATA デバイス (通常ハードディスクおよび CD/DVD-ROM デバイス) だけでなく PCI デバイスも含まれます。検出されたデバイスは起動処理中に画面に表示されます。デバイスリストがすぐに消えてしまう場合、Pause キーを押せば表示を中止して内容を読むことが可能です。インストールされた PCI デバイスがリストに含まれないのは悪い兆しです。最悪の場合、デバイスは欠陥品ということになります。良くても、デバイスは BIOS またはマザーボードの現在のバージョンと互換性がないということになります。PCI 仕様は進化しており、古いマザーボードで新しい PCI デバイスを使える保証はありません。

B.3.3. カーネル

BIOS/UEFI とブートローダはそれぞれ数秒間だけ実行されます。これでついに、長時間実行するソフトウェア、オペレーティングシステムカーネル、に到達します。カーネルはオーケストラの指揮者の役割を果たし、ハードウェアとソフトウェア間の調整を行います。カーネルは複数の仕事を担当しています。具体的に言えば、ハードウェアの駆動、プロセスの管理、ユーザとパーミッション、ファイルシステム、などを担当しています。カーネルはシステム上のすべての他のプログラムに共通基盤を提供します。

B.3.4. ユーザ空間

カーネルの以外のすべては「ユーザ空間」の意味でひとくくりにされますが、「ユーザ空間」をさらにいくつかのソフトウェア層に分割することが可能です。しかしながら、ソフトウェア層同士の相互作用は以前に比べてさらに複雑化しており、ソフトウェア層の分類分けは単純ではありません。アプリケーションは一般にライブラリを使います。ライブラリはカーネルと通信しますが、通信には他のプログラムまたはさらに多くのライブラリが必要です。