借り初めのひみつきち

仮ブログです。

BIOS と UEFI の違い

BIOSUEFI の違いはなんだろうか。

  • BIOS は大半が古臭い 16bit リアルモードで動く機械語のコードで 8086 に強く依存している。
  • UEFI は 32bit プロテクトモードや 64bit ロングモードの高級言語で書かれた比較的モダンなコードで x86 への依存が少ない。

この辺の違いはBIOSUEFIについて多少勉強したことがあれば誰でもスラスラ答えられる違いだろう。
でも両者にはもっと大きな違いがある。

BIOS は基本的な入出力システムという意味で、その起原は DOSデバイスドライバーの一部だったので明確な終了という概念がなく、 OS が起動したあとも必要であればデバイスドライバーの一部としてずっと動いている。

UEFI は拡張性の高いファームウェアの統合的なインターフェース・・・というのは建前で、現実には Windows ブートローダーを起動するためだけの存在で、 ExitBootServices API を呼び出せばコンピューターのすべての制御を OS に明け渡して RuntimeServices と呼ばれる一部の API 群を覗いたほとんどの部分が消滅する。
この儀式を行わないと UEFI が簡易的な OS としてコンピューターを制御しているので通常の OS が動くことが出来ないし、一度儀式を執り行ってしまえば BIOS のように都合よく一部のデバイスドライバーだけ生き残ってもらうこともできない。
そして Windows ブートローダーさえ起動できれば消滅してしまう存在なので、ほとんどの UEFI ドライバーは UEFI の世界で日常的にコンピューターを使うようには設計されていない。

BIOSUEFI は古臭い BIOS をモダンな UEFI で書き直した以上にもっと大きな違いがあるのだ。