私はいつも不思議に思っていたのですが、BIOS(POSTを行うこと、ブートローダを起動すること、電源ボタンを押した後にOSに制御を渡すことは別として)は、OSが動作している間に何か目的や機能を持っているのでしょうか?
オペレーティングシステムは実行中にBIOSと通信していますか?
78 JohnnyFromBF 2012-08-16
最近のOSでは、実質的には何もありません。リーナス・トーバルズは、そのタスクは “ただ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 拡張機能で、「電源管理と構成ポリシーを決定するためにプラットフォーム固有のファームウェアに依存していた以前の BIOS 中央システムとは対照的に、OS (OSPM) の制御下に電源管理をもたらします」
公式には「BIOS」は特定のファームウェアインターフェイスを指しているが、この用語は一般的にコンピュータのファームウェア全般を指すために使われることに注意してほしい。最近のいくつかのコンピュータ (特に Apple のもの) は、BIOS (sensu strictu) を UEFI に置き換えており、もちろん、これらの機能を実装するために呼び出されるものです
BIOSの役割が時間の経過とともに減少していることについての詳細は、Wikipediaを参照してください
73 Mechanical snail 2012-08-16
BIOSはオペレーティングシステムに多くのサービスを提供していますが、そのほとんどは電源管理に関連しています
- CPUとバスのクロックを変更します
- メインボードデバイスの有効化/無効化
- 拡張ポートの電源制御
- suspend-to-diskとsuspend-to-RAM
- イベント設定を再開します
Suspend-to-diskは、OSがより速く状態を復元できる(カーネルの状態のみをリロードし、必要に応じてプログラムの状態をスワップインすることで、RAM全体をリロードするよりも大幅に高速になる)ため、ほとんどの場合OSに実装されていますが、この機能は仕様に残っています
Suspend-to-RAMは、BIOSがRAMの初期化とテストをスキップすることに依存しているため、OSは現在のRAMの内容で再開するつもりであることをBIOSに伝えるAPIを必要とするため、OSによって実装することができません。このサービスを提供するために、BIOSは、特定のRAM領域をそのままにしておくようにOSに要求します
すべてのBIOSサービスのためのOSのためのインタフェースは、エミュレータ上で実行する必要がある仮想マシンコードの一部であり、必要なI/O操作をハードウェアに生成します。サスペンドの場合、これは一般的にハードウェアの書き込みを実行すると割り込みが発生し、BIOSに制御を移すように実装されています
33 Simon Richter 2012-08-16
最近のシステムでは、UEFI規格を利用したものなど、OSがBIOSを利用する部分は主に3つあります。第一は、UEFI ランタイムサービスとして知られる一連のサービスです。これらのサービスにより、OSはBIOSが使用していた時間、起動順序、現在のユーザーのセキュリティプロファイル、マザーボードやDIMMなどの情報など、BIOSだけが知っている情報を取得することができます
2つ目はシステム管理モードで、これはメモリの隠れたセクション(SMRAM)で、高優先度割り込み(SMM)によってアクセスされます。多くのBIOSは、セキュリティの高いOEM機能を実装したり、ハードウェアのワークアラウンドを実装するためにこれを使用しています
3つ目はACPIです。ACPIは、業界標準やデバイスドライバを使用してOSドライバが知ることができることを補強するために、OSが使用する設定、電源管理、ハードウェアデータとコードを提供します。例えば、ハードドライブの電源を制御するための特別な信号があるか、標準ではカバーされていないバッテリーに話しかけるための特別な方法があるかなどです
Tim
17 Tim Lewis 2012-08-16
最近のOSは主にBIOSをロードするためだけに使用していますが、特に顕著なものを含むいくつかの用途がまだあります
- 電源ボタンに反応する(4秒後にPCをシャットダウンする)
- ノートパソコンの画面の明るさ設定を変更する
- ノートパソコンのバッテリーイベント
- Suspension
9 bluehallu 2012-08-16
上で述べたことの上に、インテルは、他の方法をスイングし、Active Management Technologyを介してハードウェアへの帯域外アクセスを提供することによって、より多くのことを構築し始めている バイオスとOSから独立して制御することができますマザーボードに組み込まれています。これらのボードを使用すると、実際にはかなりのことができます。あなたがそれを内蔵または第二のOSを考慮するかどうかは別のものですが、それはボード上のハードウェアとバイオスのコンポーネントを持っているように、私は内蔵に固執しています
1 Matt 2012-08-17