高等学校工業/ソフトウェア技術/OS起動の仕組み
この項目では、インテルアキテクチャについて限って説明します。 なので、スマートホンやタブレットあるいはiPhoneやiPadなど多くのARMアーキテクチャやそれ以外のアーキテクチャについては適用できない部分もあります。また、アーキテクチャだけに限定されません。
システムの起動[編集]
コンピューターの電源を入れるなどしてシステムが起動されるときに、まずパワーオンセルフテスト(POST)が起動します
POSTとは、コンピューターなどのデジタル電子機器の電源を入れた直後に、ファームウェアやソフトウェアのルーチンによって実行される処理のことです。
ここでは主にパソコンのPOSTについて説明しますが、家電製品、航空電子機器、通信機器、医療機器などの多くの組み込みシステムにも、電源投入時に自動的に起動されるセルフテストのルーチンがあります。
POSTの結果は、機器の一部であるパネルに表示されたり、外部機器に出力されたり、診断ツールで検索できるように保存されたりします。セルフテストでは、通常の人間が読めるディスプレイが機能していないことが検出される可能性があるため、エラーコードを点滅やビープ音で表示するためのインジケータランプやスピーカを備えてもよい。POSTプロセスは、テストを実行するだけでなく、ファームウェアから機器の初期状態を設定することもある。
コンピュータの場合、POSTルーチンはデバイスのプリブートシーケンスの一部であり、POSTルーチンが正常に完了すると、ブートストラップローダーコードが起動してオペレーティングシステムがロードされる。
POSTの主要な働きとしては
- ハードウェアの初期化と診断
- ハードウェアの検出
- ファームウェアへの処理の引継ぎ
など
があります。
IBM互換機のPOST[編集]
IBM PC互換機では、POSTの主な役割はBIOSが担っていますが、特にビデオやSCSIの初期化など、特定の周辺機器を初期化するために設計された他のプログラムにその役割の一部を委ねることがあります。これらのプログラムは一般的にオプションROMと総称され、個々にはビデオBIOSやSCSI BIOSなどと呼ばれています。
POST時のメインBIOSの主な役割は以下の通りです。
- CPUレジスタの確認
- BIOSコード自体の整合性の確認
- DMA、タイマー、割り込みコントローラなどの基本コンポーネントの確認
- メインメモリの初期化、サイズ、および検証
- BIOSの初期化
- 他の専門的な拡張BIOSに制御を渡す(インストールされている場合)。
- ブート可能なデバイスの識別、整理、選択
上記の機能は、最初のバージョンまでのすべてのBIOSでPOSTによって提供されています。それ以降のバージョンのBIOSでは、POSTは以下の機能も備えています。
- チップセットの初期化
- すべてのシステムバスとデバイスを検出、初期化、カタログ化します。
- システム設定のためのユーザーインターフェースの提供
- ターゲットのOSが必要とするシステム環境を構築する。
(初期のBIOSでは、POSTはブートデバイスの整理や選択を行わず、単にフロッピーディスクやハードディスクを特定し、システムは常にその順番で起動しようとしました)
BIOSは、プロセッサがリセットされるとPOSTを開始します。CPUが最初に実行しようとするメモリの場所は、リセットベクタと呼ばれます。ハードリブートの場合、ノースブリッジは、このコードフェッチをシステムフラッシュメモリ上にあるBIOSに指示します。ウォームブートの場合、BIOSはRAMの適切な場所に配置されており、ノースブリッジはリセットベクターコールをRAMに向けます。(チップセットが標準装備される以前のPCシステムでは、BIOS ROMはリセットベクターを含むアドレス範囲に配置されており、BIOSはROMから直接実行されていました。マザーボードのBIOS ROMがコンベンショナルメモリマップのセグメントF000にあるのはこのためです)。
現代のBIOSのPOSTフローの中で、BIOSが最初にすべきことの1つは、実行している理由を決定することです。例えば、コールドブートの場合は、すべての機能を実行する必要があります。しかし、システムが省電力やクイックブート方式をサポートしている場合、BIOSは標準的なPOSTのデバイス検出を回避し、事前にロードされたシステムデバイステーブルからデバイスを単純にプログラムすることができるかもしれません。
PCのPOSTフローは、非常にシンプルでわかりやすいプロセスから、複雑で入り組んだプロセスへと発展してきました。POSTの間、BIOSは、簡単なメモリテストとセットアップ画面が表示されるだけで、PCがサポートすることが期待されるハードウェアとOSのマトリックスのために、多数の競合、進化、さらには相互に排他的な標準とイニシアティブを統合しなければなりません。
2000年前後の初期のBIOSでは、POSTは、完全なメモリテストを含むすべてのデバイスの完全なテストを行いました。IBMのこの設計は、コールドスタートプロセスの一部として完全なハードウェアテストを実行する大型システム(メインフレームなど)に倣ったものです。PCのプラットフォームが一般消費者向けに進化するにつれ、メインフレームやミニコンピュータにヒントを得た、パリティメモリやPOSTごとの徹底したメモリテストなどの高信頼性機能は、ほとんどのモデルで廃止されました。これには、PCのメモリサイズが指数関数的に大きくなり、それに伴ってメモリの価格も指数関数的に下がったことが影響しています。これは、あるCPUを使ったメモリテストの時間がメモリサイズに正比例するためです。