こんにちわ。
パソコンのオペレーティングシステム(OS)は、ユーザやプログラムとハードウェアとの橋渡しをしてくれる基本ソフトウェアです。

ですが、実際にはOSとハードウェアの間には更に基本的な動きをするソフトウェアが存在します。
そのソフトウェアのことをBIOS(バイオス)と言います。
BIOS(バイオス)とは
BIOS(バイオス)とは、Basic Input/Output Systemの略で、パソコンなどに搭載されているファームウェアの一種です。
パソコンなどに搭載されたプログラムのうち、ハードウェアとの最も低レベルの入出力を行うためのプログラムのことを言います。
BIOSソフトウェアはパーソナルコンピュータ (PC) に組み込まれており、電源投入と同時に実行されます。
主な働きはハードウェアを初期化して記憶装置からブートローダーを呼び出すことです。
その他の働きとしてはキーボードやディスプレイなどの入出力装置とプログラムがやりとりできるようにします。
システム毎のハードウェアの差異はBIOSによって隠され、プログラムはハードウェアに直接アクセスするのではなくBIOSが提供するサービスを利用することで、ハードウェア毎の差異を吸収することができます。
しかし、近年ではOS はこの抽象化した層を使用せず、OS自身が持つデバイスドライバでハードウェアに直接制御する場合が多くなっているそうです。
1990年代中盤までの主流のOSであるMS-DOSはディスク、キーボード、画面表示などでBIOSのサービスに依存していましたが、MS Windows NT、Linuxなどのプロテクトモードで動作するOSでは一般に、BIOSはOSのロードとOSの起動までを行いますが、起動後にはBIOSを使用しない設計になっています。
BIOSは特定のコンピュータまたはマザーボード機種毎に実装されており、装備するデバイスとチップセットとのインタフェースを担います。
BIOSはマザーボード上の簡単には消去されないEP-ROMなどに格納されており、コンピューターのモデル毎に設計されています。
近年のパソコンではフラッシュメモリに格納され、マザーボードから取り外さなくても書き換えが可能になっています。
(出典:ウィキメディア・コモンズ photo by Raimond Spekking / CC by-sa 4.0)
パソコンが起動される手順を知っていますか?
ところで、パソコンが起動されるときの手順はご存じでしょうか?
どんなプログラムがどのように動いて、OSが起動されるかを知っていると普通のパソコンユーザーでも、もしかしたら何かの役にたつかもしれません。
たとえば、IBM PC互換機は次のような手順で起動されます。
- 電源投入直後、もしくはリセットすると、x86は最初にBIOSが存在するアドレスの命令を実行します。通常、このアドレスはシステムメモリのほぼ最後尾のことが多いです。
- BIOSのプログラムが動きだすと、BIOS初期プログラムは Power On Self Test (POST) を実行して必要な機器が正常に動作するかをチェックします。
- そして同時にそれら周辺機器の初期化を行います。
- 次にBIOSは事前に設定されたデバイスリストを順にあたって、ブート可能な周辺機器を探します。たとえば、フロッピーディスクが起動ディスクかを見て、次にハードディスクが起動ディスク化をチェックする。。。という感じです。
- BIOSがブート可能デバイスを発見すると、そのブートセクタをロードして実行します。
- ブートセクタはカーネルをロードして実行します。カーネルはさらに初期化処理を続行します。ここからはカーネルに制御がわたり、OSの機能が順次、実行されます。
この起動の手順は、多くのパソコンで似たり寄ったりだと思います。
しかし、最近ではインテルのUEFIを採用しているOSが増えました。
UEFIはUnified Extensible Firmware Interfaceの略でOSとプラットフォームファームウェアとの間のソフトウェアインタフェースを定義する仕様です。
UEFI BIOSはIBM PC互換機に採用された古いSystem BIOSをよりセキュリティ的に強固な仕組みへの置き換えを意図しています。
ちなみに、UEFIファームウェアには以下のような技術的利点があるそうです。
- 2TiBを超える大きなディスクからブート可能
- より高速なブート
- CPUに依存しないアーキテクチャ
- CPUに依存しないドライバ
- ネットワークも使用可能な柔軟なプレOS環境
- モジュール化設計
最後までおつきあい、ありがとうございました。