起動後のBIOSの動作
コンピュータが起動プロセスを終了し、あなたがしっかりと賑やかになっているオペレーティングシステムの中にいるならば、BIOSがするために残された何かがありますか??
本日の質疑応答セッションでは、コミュニティ主導のQ&A Webサイトのグループである、Stack Exchangeの1部門であるSuperUserのご好意により、当社にお越しいただきます。.
質問
SuperUser読者IndrekはこのBIOS関連の質問を投げかけている:
オペレーティングシステムの実行中にBIOS(POSTの実行、ブートローダの起動、および電源ボタンを押した後の制御のOSへの受け渡しを除く)に目的または機能があるかどうか、私はいつも疑問に思いました。?
オペレーティングシステムは実行中にBIOSと通信しますか。?
確かに? BIOSには、コンピュータの起動における重要な役割以外にどのような機能がありますか?
回答
SuperUserの寄稿者であるMechanical Snailのご好意により、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に置き換えたものもあり、もちろんそれがこれらの機能を実装するために呼び出されるものです。.
BIOSの役割が時間の経過とともにどのように減少してきたかについての詳細は、Wikipediaを参照してください。.
もう1人のSuperUser貢献者であるSimon Richterが、BIOSがまだ実行していることの概要を説明しています。
BIOSと電源管理
BIOSはオペレーティングシステムに多数のサービスを提供しますが、その大部分は電源管理に関連しています。
- CPUとバスのクロックを変更する
- メインボードデバイスを有効/無効にする
- 拡張ポート電力制御
- suspend-to-diskおよびsuspend-to-RAM
- イベント設定を再開
OSはその状態をより速く復元できるので、ディスクへのサスペンドがほとんどの場合実装されています(カーネル状態だけがリロードされ、必要に応じてプログラム状態がスワップインされます。これはRAM全体をリロードするよりもかなり速いです)。機能は仕様に残っています.
RAMの初期化とテストをスキップするBIOSに依存しているため、OSにはSuspend-to-RAMを実装できません。そのため、OSには現在のRAMの内容から再開することをBIOSに指示するAPIが必要です。このサービスを提供するために、BIOSはOSに特定のRAM領域をそのままにするように要求します。.
すべてのBIOSサービス用のOSのインタフェースは、エミュレータ上で実行する必要があり、ハードウェアへの必要なI / O操作を生成する仮想マシンコードの一部です。サスペンドの場合、これは一般にハードウェア書き込みの1つを実行してから割り込みをトリガーしてBIOSに制御を移すように実装されています。.
説明に追加するものがありますか?コメントの中で消してください。他の技術に精通したStack Exchangeユーザーからの回答をもっと読みたいですか?こちらのディスカッションスレッドをチェックしてください。.