コンピューターの起動プロセスが完了し、オペレーティング システムがしっかりと動作するようになったら、BIOS が行うべきことは残っていますか?
今日の質疑応答セッションは、コミュニティ主導の Q&A Web サイトのグループである Stack Exchange の下位部門である SuperUser のご好意で提供されました。
質問
SuperUser 読者の Indrek が、BIOS 関連の次の質問を投げかけています。
私はいつも疑問に思っていましたが、オペレーティング システムの実行中に BIOS ( POST の実行 、 ブートローダーの起動 、電源ボタンを押した後に制御を OS に渡すこと以外) に何か目的や機能があるのでしょうか?
オペレーティング システムは実行中に BIOS と通信しますか? 通信する場合はどのように通信しますか?
確かに? BIOS には、コンピューターの起動における重要な役割以外にどのような機能がありますか?
回答
SuperUser の寄稿者である Mechanical Snail の厚意により、BIOS の役割が時間の経過とともにどのように変化してきたか、また BIOS が現在何を行っているのか、そして現在何を行っていないのかの概要が示されています。
BIOS の役割
最新の OS では、 ほとんどありません 。 Linus Torvalds 氏は、その役割は「OS をロードしてそこから抜け出すだけ」であると述べたと伝えられています。
MS-DOS などの古いオペレーティング システムは、割り込みを呼び出すことにより、多くのタスク (ディスク アクセスなど) を BIOS に依存していました。
最新の OS では、ブートローダーはすぐに 32 ビット モードまたは 64 ビット モードに切り替わり、OS カーネルを実行します。カーネルは、ユーザー空間アプリケーションから呼び出すことができる独自の割り込みハンドラーを登録できます。カーネルのルーチンは、移植性が高く (特定のハードウェアに依存しないため)、柔軟性が高く (OS ベンダーは、ハードウェアに付属のものを使用する必要がなく、オンデマンドでルーチンを変更できます)、より洗練されています (任意に複雑なルーチンを実行できます)。 BIOS にプログラムされたものではなくコード)、より安全です(OS は共有リソースへのアクセスを制御し、独自の任意のアクセス許可スキームを実装してプログラムが相互に干渉するのを防ぐことができるため)。
特定のハードウェアと対話するために、OS は独自のデバイス ドライバーをロードして使用できます。したがって、OS やアプリケーションがほとんどの BIOS ルーチンを呼び出す必要はまったくありません。実際、セキュリティ上の理由から、BIOS 割り込みも無効になっています。 BIOS は 16 ビット リアル モードで動作するため、最新の OS を呼び出すのは困難です。
OS の実行中、BIOS の使用は非常に制限されていますが、その機能は依然として周辺的に使用されます。 たとえば、コンピュータがスリープしているとき 、OS は実行されていないため、最終的にはファームウェアがハードウェアを適切な状態に設定して、OS を一時停止して再開することになります。これらの使用は通常、完全な BIOS インターフェイスへの呼び出しではなく、 ACPI 呼び出しに限定されます。 ACPI は、「電源管理と構成ポリシーを決定するためにプラットフォーム固有のファームウェアに依存していた以前の BIOS 中心システムとは対照的に、電源管理をオペレーティング システム (OSPM) の制御下に置く」 BIOS 拡張機能です。
公式には「BIOS」は特定のファームウェア インターフェイスを指しますが、この用語は一般的にコンピュータ ファームウェア全体を指すのに使用されることに注意してください。最近のコンピューター (特に Apple コンピューター) では、BIOS (sensu strictu) を UEFI に置き換えています。もちろん、UEFI はこれらの機能を実装するために呼び出されるものです。
BIOS の役割が時間の経過とともにどのように低下したかについて詳しくは、 Wikipedia を参照してください。
もう 1 人の SuperUser 寄稿者である Simon Richter が、BIOS が現在も実行していることの概要を説明しています。
BIOS と電源管理
BIOS はオペレーティング システムに多数のサービスを提供しますが、そのほとんどは電源管理に関連しています。
- CPUとバスクロックを変更する
- メインボードデバイスの有効化/無効化
- 拡張ポートの電源制御
- ディスクへのサスペンドと RAM へのサスペンド
- イベント設定を再開する
ディスクへのサスペンドは、OS がその状態をより速く復元できるため、ほとんどの場合 OS に実装されます (カーネルの状態のみがリロードされ、必要に応じてプログラムの状態がスワップインされます。これは、RAM 全体をリロードするよりも大幅に高速です)。この機能は仕様に残ります。
RAM へのサスペンドは、RAM の初期化とテストをスキップする BIOS に依存しているため、OS では実装できません。そのため、OS は、現在の RAM の内容で再開するつもりであることを BIOS に伝えるための API を必要とします。このサービスを提供するために、BIOS は OS に対し、特定の RAM 領域をそのままにしておくように要求します。
すべての BIOS サービスに対する OS のインターフェイスは、エミュレータ上で実行する必要がある仮想マシン コードの一部であり、ハードウェアに必要な I/O 操作を生成します。サスペンドの場合、これは通常、ハードウェア書き込みの 1 つを実行すると割り込みがトリガーされ、制御が BIOS に移されるように実装されています。
説明に何か追加することはありますか?コメントでは音を消してください。他のテクノロジーに精通した Stack Exchange ユーザーからの回答をさらに読みたいですか? ここで完全なディスカッション スレッド を確認してください。





