PC が発明されるずっと前に存在していたコンピューター (IBM 1130 や 1800 など) を含むすべてのコンピューターには、定義上 BIOS がありました。しかし、1981 年以降、この言葉はより具体的に IBM PC を指すようになりました。この文脈では:
厳密に言えば、 基本入出力システムまたはBIOS (基本入出力システム) は、基本的な操作 (画面への文字の書き込み、読み取りなど) を実行するために使用されるマザーボードの読み取り専用メモリ(ROM) に含まれる一連の機能です。ディスク上のセクターなど)。この用語は、マザーボードの「ファームウェア」または「マイクロコード」(組み込みソフトウェア)全体を表すためによく使用されます。 BIOS には、上記の単純な入出力操作を実行するための基本ルーチンが含まれているため、ほとんどの場合、そのマザーボードのメーカーによって開発されます。
1999 年以来、 Free Software Foundation は、マザーボードの BIOS をフラッシュして別の BIOS と交換できるため、 GNU General Public Licenseに基づいてライセンスされた BIOS である LinuxBIOS をサポートしています。このシステム (BIOS で動作するマシン) の利点は、マザーボードごとに特定のオペレーティング システムを開発する必要がないことです。
メーカーがこのマザーボードをどのように開発したかに関係なく (どのコンポーネントを選択したか、このマザーボードの「ハードウェア」がどのように動作するかに関係なく)、2 つの異なるマザーボードで同じ BIOS 機能を使用すると、同じ結果が得られます。これらは、オペレーティング システムがアプリケーションを実行するために使用する機能です。 BIOS には、コンピューターの起動時に実行されるPOST (電源投入時自己テスト) も含まれており、ディスクの宣言、コンポーネントの構成、および起動前のオペレーティング システムの検索が行われます。その主なタスクは、デバイスとの通信に対する低レベルのサポートを提供することです。通常、これには、少なくとも 1 つのモード (USB である必要はない) でのキーボード サポートと簡易表示モードが含まれます。 BIOS はマシンコードで書かれており、通常はアセンブリ言語で開発されます。
2 つの歴史的なPowerPC BIOS は、引き続いて PREP および CHRP と名付けられました。
BIOSを起動する
1981 年 8 月のIBM互換 PC の導入以来、BIOS はブートフェーズ中にシステムに最初のコマンドを発行し、たとえば、オペレーティング システムのブート ローダー (またはブート ローダー) をどのディスクのどこで見つけるかを指示します。 、通常はWindowsまたはLinuxです。 Windows の場合、これはNTLDR 、マルチブートシステム (同じコンピュータ上で複数のオペレーティング システムを起動する可能性) の場合、単純な場合 (Windows および Linux) の Lilo、より高度な場合 (すべてのシステムがサポートされている) GRUB です。 。
BIOS には、メモリ、キーボード、ハードドライブ、入出力ポートなどの重要なコンポーネントの整合性を簡単にチェックする診断ツールも含まれています。
特定の BIOS パラメータはユーザーが調整できます (ブート ゾーンを検出するためにスキャンする周辺機器の順序、プロセッサの種類と周波数など)。これらのパラメータはすべて、マザーボード上のバッテリ (通常はリチウム) によって駆動される低消費電力の小型メモリ (数百バイト) (CMOS タイプ) を使用して永続的に保存されます。このメモリは、誤用により一般に「CMOS」と呼ばれます。
初期の PC および AT BIOS のソース コードは、IBM テクニカル リファレンス マニュアルに含まれていました。現在、ほとんどのマザーボードには BIOS ソース コードが付属していません。ユーザーは、製造元が提供するアップデートをダウンロードする必要があります。特定のデバイスをサポートするために、これらのアップデートが必要になる場合があります。
歴史的に、BIOS は診断および構成機能に加えて、ハードウェア層を可能な限り抽象化できる一連のサービスを提供してきました。これらのサービスはオペレーティング システムによって使用され、特定のメモリ領域 (たとえば 40:00) または特定のソフトウェア割り込み (特に午前 10 時、午前 11 時、午後 12 時、および午後 1 時) を介してアクセスできます。ただし、実際には、最近のオペレーティング システムではこれらのサービスはほとんど利用されていません。時々バグがあるため、または最近のシステムが保護モードで実行され、通常はリアル モードでのみ提供される BIOS サービスへのアクセスが困難になっているためです。

ファームウェアとしての BIOS
BIOS はハードウェアに近いため、ファームウェアと呼ばれることもあります。 1990 年代以前は、BIOS は変更できない ROM チップに保存されていました。複雑さが増し、更新の必要性が生じると、変更可能な EEPROM またはフラッシュ メモリに保存されるようになりました。
したがって、ソフトウェアを使用してコンピュータの BIOS を更新することができます。この操作は「BIOS のフラッシュ」と呼ばれます。この操作中に問題 (停電、ROM バージョンの不良など) が発生すると、重大な結果が生じる可能性があります。したがって、この操作が本当に必要な場合にのみ BIOS をフラッシュすることをお勧めします。一部のマザーボードには BIOS の 2 つのバージョンがあります。1 つはソフトウェアを変更できる現在のバージョン、もう 1 つはバックアップコピーで、現在のバージョンをバックアップ バージョンで上書きできるようにするジャンパーです。初期 BIOS チップが抽出可能であれば、1 つしか搭載されていないマザーボードに 2 つ目のフラッシュを追加するためのメカニズムもあります。
拡張カード上のファームウェア
コンピューターは複数の BIOS チップをホストできます。キーボードなどの重要なハードウェアにアクセスするための機能を含むブート BIOS に加えて、SCSI カードやビデオカードなどの拡張カードは独自の BIOS を搭載して、ブート BIOS の機能を拡張または置き換えることができます。
BIOS をトリガーするパワーグッド信号
プロセッサーがパワーグッド信号を受信すると、BIOS ファームウェアの実行を開始します。
このパワーグッド信号は、電源によって (つまり、ユーザーがコンピューターの電源を入れたとき)、またはユーザーがリセットボタンを押したときに送信されます。
「POST (電源投入時セルフテスト)」を参照してください。

将来:拡張可能なファームウェア インターフェイス
Extensible Firmware Interface (EFI)、現在の UEFI (Unified EFI) は、BIOS の後継となることを目的とした最新のソフトウェア インターフェイスです。
EFI には、標準で組み込まれた多くのネットワーク機能をサポートできるなど、BIOS に比べてさまざまな利点があります。また、真の高解像度グラフィカル インターフェイスを提供し、複数のオペレーティング システムのインストールを統合管理することもできます。
BIOS はアセンブラで書かれていますが、EFI は完全に C で開発されているため、将来の開発に対してある程度の柔軟性が得られます。 EFI は、オペレーティング システムとそれが実行されるハードウェア プラットフォーム間の独立性を高めるために開発されており、 Itanium (IA-64)、 x86 (32 ビットおよび 64 ビット) などのさまざまなプラットフォームで利用できます。
現在、AMD、 American Megatrends 、 Dell 、HP、Intel、IBM、Insyde、 Microsoft 、およびPhoenix Technologiesが、UEFI フォーラム内でこのテクノロジーの主要プレーヤーとなっています。これらの企業は現在 UEFI 仕様の策定に取り組んでおり、2006 年初めに公式の UEFI 2.0 仕様 (統一 EFI 仕様) をリリースしました。
Intel プロセッサを搭載したAppleコンピュータはこのテクノロジーを使用しています。
Windows Vista の最初のバージョンには UEFI 管理が含まれておらず、これは x64 プラットフォームのみの「サービス パック 1」に対して発表されました。サーバー オペレーティング システムの最初のバージョン「Windows Server 2008」(旧名 Longhorn)には、64 ビット プロセッサ用の UEFI 管理も含まれています。これらのシステム以降のバージョンでも同じ戦略を採用する必要があります。
ディスクの管理

現在のバージョン
ディスク上のデータ ブロックには直線的に番号が付けられ、指定された量のセクターが含まれます。
旧バージョン: 1024 シリンダーの問題
データ ブロックは、シリンダー、ヘッド、セクターの 3 つの数字で識別されます。古い BIOS は最大でも 1024 シリンダー、256 ヘッド、63 セクター用に設計されていました。したがって、ブートローダーが1024 番目のシリンダーを超えている場合、BIOS はそこに到達できませんでした。
ハードドライブのシリンダー、ヘッド、セクターの一般的な説明については、この記事を参照してください。
