10

BIOS について、ウィキペディアは次のように述べています。

BIOS のメモリのアドレスは、コンピュータの最初の起動時に実行されるように配置されています。次に、ジャンプ命令により、BIOS でコードの実行を開始するようプロセッサに指示します。

BIOS が不揮発性メモリにあることは知っています。ただし、実行するにはRAMにロードする必要があります。では、誰が BIOS を RAM にロードするのでしょうか?

また、起動時にメモリ マップが読み込まれることも確認しました。BIOS はこのメモリ マップをロードしますか? はどこに保存されますか?

4

1 に答える 1

15

最初の電源投入時に、BIOS は ROM から直接実行されます。ROM チップは、プロセッサのメモリ空間内の固定位置にマップされます (これは通常、チップセットの機能です)。x86 プロセッサがリセットから復帰すると、すぐに 0xFFFFFFF0 から実行を開始します。

ただし、ROM から直接実行するのは非常に遅いため、通常、BIOS が最初に行うことの 1 つは、BIOS コードを RAM にコピーして解凍し、そこから実行することです。もちろん、メモリ コントローラを最初に初期化する必要があります。BIOSは事前にそれを処理します。

メモリ マップのレイアウトは、システムによって異なります。電源投入時に、BIOS は接続された PCI/PCIe デバイスにクエリを実行し、必要なリソースを判断して、メモリ マップの最適な場所に配置します。すべてが正常に機能している場合、メモリ マップ デバイスは RAM とオーバーラップしていません。(3GB を超える RAM を搭載した 64 ビット システムでは、32 ビット PCI/PCIe デバイス用に RAM の中央に「穴」が必要になるため、状況が複雑になることに注意してください。一部の初期の x64 BIOS およびチップセットには、これに関する問題がありました。 .)

于 2014-01-09T13:56:36.843 に答える