コンピューターにBIOSが必要なのはなぜですか?


35

BIOSのソフトウェアをPCに組み込まれた、と(「ブートファームウェア」)の電源が入ったときにPCによる最初のコードが実行されています。PCの起動時、BIOSの最初のジョブは、CPU、RAM、ビデオディスプレイカード、キーボードとマウス、ハードディスクドライブ、光ディスクドライブなどのシステムデバイスを初期化および識別するパワーオンセルフテストです。他のハードウェア。BIOSは、ハードディスクやCD / DVDなどの周辺機器(「ブートデバイス」と呼ばれる)に保持されているブートローダーソフトウェアを見つけ、そのソフトウェアをロードして実行し、PCを制御します。[2] このプロセスは、ブートまたはブートアップと呼ばれ、ブートストラップの略です。

コンピューターシステムにBIOSをインストールする必要があることを決定する要件はどれですか?

オペレーションシステムが実際にすべてのBIOS作業を実行できないのはなぜですか?


40
車のエンジンにスターターが必要なのはなぜですか?エンジンはそれ自体を起動するのに十分なほど強力ではないでしょうか?
デアホッホステープラー

4
@OliverSalzburgこれは近い将来、ガソリンエンジンの始動機なしで可能になるでしょう。直接注入とコンピューターを使用すれば簡単です。
モアブ

2
彼らはすでに自己始動エンジンを持っていますが、それらはほとんど12+シリンダーまたはロータリーエンジンです。ほとんどのエンジンは、1回のパワーストロークで慣性モーメントを克服するのに十分なパワーを生成できないという理由だけで、自己始動できません。直接注入し、よりよい時期は少し役立つかもしれませんが、本当にあなたは軽いフライホイールによって作成されたintertiaの瞬間にpowerstrokeに発生するエネルギーの比率を高めるために、エンジン、クランクシャフト、ギアなどを必要とする
Lèseはmajesté

5
実際、PCの意味でのBIOSは必要ありません。IBM System / 360および/ 370コンピューター(およびより新しいバージョン)は、コンソールのダイヤルで選択されたデバイスから単一のレコードを読み取る単一のハードワイヤード命令で起動しました。そのレコードには、ディスクからOSをロードするより複雑なブートストラッププログラムをロードするブートストラッププログラム(80バイトに収まる必要があります-1枚のパンチカード)が含まれていました。「BIOS」は、右ボタンを押したときに実行するようにハードワイヤードされた単一の命令(IPLまたは初期プログラムロードと呼ばれる)だったと思います。
Ex Umbris

2
あなたは質問で「コンピューター」と「PC」を混同しています。それが答えが混乱し、時には矛盾している理由です。
RDS

回答:


41

BIOSは、マザーボード自体に保存されているハードウェア依存のコードです。マザーボードごとにカスタムBIOSを作成する必要があるため、汎用 BIOS / OSをオールインワンにすることは不可能です(ただし、BIOSは技術的にはコードを保存するだけなので、特定のマザーボード用にOSを理論的に記述することができます) 。前述のとおり、BIOSの目的は次のことを行うことです。

PCの起動時、BIOSの最初のジョブは電源投入時のセルフテストで、CPU、RAM、ビデオディスプレイカード、キーボードとマウス、ハードディスクドライブ、光ディスクドライブなどのシステムデバイスを初期化して識別します。他のハードウェア。

外部ストレージなしでコンピュータを起動できることに注意してください。これが、BIOSがコンピュータの要件である理由です。言い換えると、BIOSは、保存されたコンピュータープログラムがマザーボードに接続されているさまざまなハードウェアデバイスと通信できるようにする共通のソフトウェアインターフェイスを提供します。

たとえば、2つの異なるSATAコントローラを備えた2つの異なるマザーボードがある場合、BIOSにより、マザーボードが実際にSATAデバイスにコマンドを送信する方法を知らなくても、両方で機能するコードを記述できます。コンピューターに「このSATAデバイスからセクターXを読み取る」ように指示するだけで、BIOSはこれらのコマンドを実際にハードウェアに送信します。

実際に「読み取りセクターX」情報を取得する場所は、BIOSに含まれる保存プログラムであり、通常は共通の場所に保存されているブートローダーから読み取りを開始するようコンピューターに指示します。これらの共通の場所は、さまざまなソフトウェアおよびハードウェア開発者によって合意されており、通常はシステム間の互換性を高めるために公開されています。

基本レベルのインターフェイス(再度、ソフトウェアを介した論理インターフェイス)が確立されると、オペレーティングシステム自体がさまざまなハードウェアデバイスとの共通インターフェイスを構築し(通常は「デバイスドライバー」を使用)、オペレーティングシステムがハードウェアを制御できます。


最後に、BIOSはコンピューターのハードウェア構成を変更し、オンボードEEPROMに保存するためにも使用されることに注意する必要があります(したがって、コンピューターは次回起動時に変更を記憶します)。ただし、前述したように、オペレーティングシステムが読み込まれると、コンピューターを完全に制御できます。

これにより、マザーボードメーカーは、BIOSを再起動するのではなく、オペレーティングシステム内からこれらの変更を行うことができるソフトウェアを開発できます。繰り返しますが、これはハードウェアとソフトウェアに大きく依存しますが、すべてのコンピューターのインターフェースが相対的であることを示しています。BIOSは、その名前が示すとおりのものです。より高度なプログラム(「オペレーティングシステム」)の共通ソフトウェアインターフェイスがマシンを制御できるようにする基本的な入出力システムです。


2
コンピュータを起動すると、BIOSはプロセッサのマシンコードとして実行されます。あなたはそのように考えることができますが、それはある意味では実際に「オフ」ではありません-それは単にOSを実行するように切り替わります。コンピューターを起動すると、BIOSはコンピューターにロケーションXに保存されているマシンコードの実行を開始するように指示します。より一般的な言い方をすれば、BIOSはハードウェアを初期化し、コンピューターにコードの実行を継続するよう指示します。
ブレークスルー

13
BIOS / OSオールインワンは不可能ではありません。ここにいるみんながこれを言い続ける理由がわかりません。各パーツを別々のデバイス/ストレージに配置しても、それらが同じ論理エンティティの一部ではないという意味ではありません。IBM PC以前のコンピューターはオールインワンでした。つまり、BIOSはOSカーネルを開発したのと同じコンピューターによって製造および開発されました。実際、OSの更新にはBIOSの更新が含まれることがあります。
m0skit0

3
@Oliver実際、ACPIでは、OSの起動後にBIOS機能が日常的に使用されます。
デロバート

1
BIOSにより、OS(ソフトウェアレイヤー)はハードウェアと対話できます。BIOSとOSは異なる目的を果たします。それらは全体の2つの部分です。一方が他方に取って代わることはありません。
ベンリチャーズ

1
@Breakthrough:ハードウェアの製造者に依存します;)IBM PCの場合、ハードウェアタイプの多様性のために、論理的な進化は独立したBIOSおよびOSメーカーでした。これは昔は起こりませんでした。これが、PCが(理由なくM $を含むことを除いて...)革命であり、コンピューティング市場全体を変えた理由です。
m0skit0

7

オペレーティングシステムはハードディスク上にあります。コンピュータの電源を入れても、そのハードディスクから魔法のように読み始めることはありません。ハードディスクからブートローダーをロードするのはBIOSであり、テストを行ってBIOSの特定の設定を構成できるようにします。

お使いのOSは、ROMではなくハードディスク上にあるため、できません

したがって、BIOSまたはEFIのような類似(しかし異なる)テクノロジーが必要です...

製造元は、OSの一部をROM(OSのブートローダーのロードを担当)に置くことができます。ただし、これは広く適用されておらず、とにかくBIOSまたはEFIが利用可能です。


1
2つの異なる概念が混在しています。BIOSはOSから独立しています。つまり、BIOSはOSの一部である可能性があります。たとえば、同じ製造元で製造され、ゲームコンソールのブートストラップのように、そのOSでのみ動作する場合。
m0skit0

5
「BIOSはOSから独立しています。つまり、BIOSはOSの一部である可能性があります。」え?矛盾は非常に矛盾しています(笑)。
ブレークスルー

2
ゲームコンソールはコンピューターであるため、Atari、Amiga、および古いMacも同様です。@ブレークスルー:それは矛盾していません。BIOSはOSとは何の関係もないため、BIOSの一部(またはそうでない)になり得ることを意味します。
m0skit0

@TomWijsmanここでトローリングしているのはあなただけです。ゲームコンソールはコンピューターのサブセットです。一部のコンソールで実行できる場合は、一部のコンピューターで実行できます。また、そのように太字を使用しないでください。不適切です。
-luiscubal

1
@TomWijsmanには、ゲーム機でできるならコンピューターができるという点があります。また、質問または回答でない限り、トピックから外れているという問題はありません。コメントは、結局のところコメントです。それ以上でもそれ以下でもありません。(大胆な問題についてのコメントはありません。それぞれについては、用語を扱っていますが)
ブレークスルー

6

本当の論理的な理由はありません。それはより多くの遺産と歴史の問題です。

  1. コンピューターにBIOSがインストールされている必要はありません。IBM PCからの遺産です。これは良いアイデアであることが判明しましたが

  2. オペレーティングシステムがこれを実行しても、BIOSのように動作するため、実際には何も変わりません。もちろん、OSはI / OデバイスではなくROMにある必要があります。この問題は、OSビルダーがOS BIOSを他のOSと互換性のないものにすることを決定したときに、独占の問題で発生する可能性があります。BIOSメーカーとOSを分離すると、実行するソフトウェアの自由度が向上します。


1
なぜBIOSとして機能できないのですか?理由を説明してください。ROMにブートストラップを配置するだけで完了です。完全にROMに収めるつもりはありませんが、ROMが十分に大きい場合でも動作します(もちろん、実行するにはRAMに部品をロードする必要がありますが、これは現在のBIOSでも行われます)。
m0skit0

3
彼はPCではなく「コンピューター」と言った。はい、それは適用可能です。実際、IBM PC(Atari、Amiga ... BIOSはOSの一部です)の前はこの方法でした。
m0skit0

2
馬鹿げた、私はBIOSやOSがなく、アプリケーションコードだけの組み込みコンピュータ用のソフトウェアを書くのが常でした。または、ほとんどの人が考えているコンピューターだけでなく、すべてのコンピューターについて話しているのですか?
-jwernerny

2
大規模には適用されませんか?PCの前にAtaris、Amigas、Macがいくつあったかを確認してください。
m0skit0

2
iPhoneはコンピューターであり、BIOSがあるとは思わない。デジタル時代の前でさえ...コンピュータは、操作を実行し、与えられた入力に対して同じ結果を出力するプログラム可能なマシンですよね?ジャカード織機はコンピューターであり、BIOSがありません(OSさえありません)。
RDS

5

オペレーティングシステムを起動するには、何かが必要です。OSが一部の不揮発性メモリに収まる場合は、直接起動できますが、Windows、OSX、Linuxなどのフル機能のOSではこれは不可能です。

必要なのは、メモリやディスクへのアクセスなどの基本的なことを実行してからオペレーティングシステムをロードする、起動時にロードできる小さな軽量の「OS」です。これはOS自体の一部であり、個別のエンティティではない可能性がありますが、別のプロセスを最初に開始する必要がある理由は他にもあります。

  1. 更新-OSがこのように修正された場合、セキュリティパッチが必要な場合は更新が困難になります。ファームウェアの更新は、ルーターなどのデバイスに対して常に行われますが、これらには比較的単純なオペレーティングシステムがインストールされています。
  2. 柔軟性-コンピューターは汎用マシンであり、同じハードウェアで複数の異なるオペレーティングシステムを実行できます。BIOSを使用してディスクからOSをロードするということは、どれを実行するかを選択できることを意味します-いくつかのサイドバイサイドがインストールされている場合でも実行できます。

このプロセスはブートストラップと呼ばれます。


1
不安は、さまざまなOSがたくさんあるからですか?つまり、特定のハードウェアに対応するOSモデルが1つしかない場合、BIOSは不要になりますか?
ディオゴ

1
MicrosoftがBIOSを作成することが不可能な理由がわかりません
...-m0skit0

1
不揮発性メモリにOS全体を収める必要はありません(これは、十分なROM:Pが必要なだけです)。そこにいるのはブートストラップのみです。
m0skit0

1
@ m0skit0マイクロソフトは、BIOSを作成することができません。ソフトウェアを実行するマザーボードごとに異なるBIOSを作成する必要があるためです。:)
ブレークスルー

1
また、OSをROMに配置する@ChrisFは、そもそもオペレーティングシステムの全体を損なうものです。ROMを使用してプロセッサ上に格納されたプログラムを直接実行することは理にかなっているかもしれませんが(これによりパフォーマンスが大幅に向上します)、オペレーティングシステムの重要なポイントは、このタイプの操作を明示的に禁止し、共通のソフトウェアインターフェイスを提供することですそうする。
ブレークスルー

4

PC BIOSの概念は、IBM PCが引き継ぐ前に8ビットZ-80 "S-100"バスベースのコンピューターで一般的なオペレーティングシステムであるCP / Mから派生しています。

CP / Mは、ハードウェア依存機能がROM(BIOS)にあると予想していました。ブートローダーによってディスクからロードされた別の部分は、CP / Mファイルシステム(BDOS)をサポートし、その後コマンドプロセッサまたは「シェル」(CCP)をサポートするソフトウェアでした。CP / Mがサポートすることが期待されていたハードウェアはそれほど多くありませんでした:プリンターまたはモデムを接続できるディスクドライブ、ディスプレイ、シリアルポートまたは2つ(COMまたはAUXポート)。

PC BIOSはCP / Mと同様の基本的なブートストラップ機能を実行し、DOSはBIOS機能を使用して基本的な入出力を意図どおりに実行しました。プログラマーは遅いため、これらの機能をバイパスすることになりました。これにより、互換性のあるインターフェイスを備えたBIOSを提供する代わりに、80年代半ばにPCクローンメーカーがプラットフォーム全体を再作成しました(IBMが元のPCを非常に詳細に文書化および文書化したため)。

この時点で、最新のOSの場合、システムを起動する以外にBIOSは必要ありません。しかしながら ...

90年代初頭から、電源管理の概念が定着し、BIOSがこれを任されました。APMは、DOSなどのシングルタスクOSでは正常に動作しますが、WindowsやLinuxなどの真のマルチタスクOSでは動作しません。この頃、386は真のマルチタスクをサポートするIntel CPUである全力を発揮していました。DOSとBIOSは、このCPUの新しい機能に対応して更新されませんでした。ほとんどのIntel CPUは、元のPC-BIOSが設計されたレガシー16ビット互換モードで実行されるためです。そのため、最新のOSは、おそらく初期の起動段階を除き、BIOSのCP / Mのような入出力機能をほとんど無視/バイパスします。

最終的にACPIが開発されましたが、ほとんどはBIOSの一部であり、電源管理と(多くの場合ラップトップ)プラットフォーム固有のものの構成をサポートしていました。ACPIは、休止状態、スリープ、またはシャットダウンの最終的な電源切り替え状態も処理します。

そのため、最近ではACPIであり、BIOSのようなものをPCの必要性を維持しているのはEFIです。包括的な概念は、ACPIがプラットフォームまたはマザーボード固有のものとOSの間のインターフェースであるため、OSの別個のビルドではありませんマザーボードの種類ごとに作成する必要があります。

Linuxを実行するARM CPU(および携帯電話ハードウェア)を収容する開発ボードには、この問題があります。通常、U-bootなどのブートローダー専用ファームウェアが付属しますが、OSはほとんどの場合、各ボードを個別のプラットフォームとしてサポートする必要があります。


3

ある意味では、あなたは正しい。BIOSとOSは部分的に同じことを行います。BIOSとOSの分離は、柔軟性のためだけです。

BIOSは通常、ハードウェアの製造元によって作成されます。ハードウェアは、基本機能が存在すること、たとえば、ディスクドライブの読み取り、診断とエラーの基本表示の表示などを保証する必要があります。したがって、「基本入出力システム」という名前です。

これらはすべて特定の小さなBIOS標準をサポートする必要があるため、特定のシステムに実際に存在する実際のコンポーネントさらに理解することなく、ある程度まで実行できます。これにより、ベンダーは完全なシステムをカスタム構築できます。BIOSはOSを起動するのに十分なことをするだけです。この開始点の場所にはいくつかの規則があるため、次々に試行します。これにより、同じハードウェア上で異なるオペレーティングシステムを使用することもできます。(柔軟性もあります)

オペレーティングシステム(または少なくともブートローダー)が検出されず、BIOSによって起動されると、BIOS自体はほとんど使用されなくなります。最新のOSは、ロード後にBIOSの機能をほとんどまたはまったく使用しません。

OSにすべての作業を行わせたい場合は、OSをソフトウェア(ROM)の予備的な助けなしにハードウェアからアクセスできる場所に配置する必要があります。これは、柔軟性が問題にならない一部のクローズドシステムでは可能です。ハードウェアサポートを他のハードウェアに組み込むことを考えている場合、基本的にはある種のBIOSを再度構築しています...

もう1つの懸念は、メモリサイズとコストです。フル機能のOSは大規模であり、数ギガバイトのOSをROMにしようとすると、パッチを適用して更新するというフォローアップの問題に加えて、費用がかかります。

いいえ、技術的な理由はありませんが、多くの実用的な理由があります。特に、柔軟なPCプラットフォームの場合です。


3

最新のPCでプログラムを実行するには、ハードウェアの操作方法とプログラムをメモリにロードする方法を知っているプログラムを実行する必要があります。この鶏と卵の問題は、基本的なプログラムをハードウェア自体に埋め込むことで解決されます。

この基本入出力システム(BIOS)は非常に小さく、範囲が非常に限られていますが、GRUBNTLDRなどの第2ステージブートローダーをロードして実行できる十分な基盤を提供します。これらの第2段階ローダーは、BIOSプログラムよりも洗練されており、ロードして制御を引き継ぐのに適切なオペレーティングシステムの堅牢な基盤を提供できます。


非技術的な説明。
機械式カタツムリ

1

CPUがBIOS、EFI、ROM内の他のコード(またはNVRAM、その他)に依存せずにハードドライブを直接アドレス指定できる場合、理論上、このようなCPUはOSをディスクからRAMにロードして開始できますそれを実行します。

実際、理論的には、そのようなCPUはRAMにロードせずに命令実行することさえできます。コンピュータがハードドライブをプライマリストレージとして使用できないという理論的な理由はありません。しかし、これは非常に遅くなります。

これは、ディスクにアクセスするためにCPUに余分なコードを持ち、パーティションテーブルやファイルシステムなどのディスクに関するいくつかの概念をCPUにハードワイヤリングすることを意味します。最近のCPUはこれを行うのに十分な大きさですが、CPUを設計するための非常に柔軟で効率的なアプローチではありません。


以前は、大量のRAMなしで、ディスク/ドラムから直接実行されるコンピューターでした。
ダニエルRヒックス

-1

必要ありません!

BIOSと呼ばれることが多いのは、3つの要素のセットです。

  • ブートローダー
  • 構成ツール:ブート順序とクロックを除いて、ほとんどが廃止されました。残りのほとんどは、自動化するか、メーカーが設定する必要があります。
  • BIOS:オペレーティングシステムがハードウェアと通信するのを支援する入出力ルーチンのライブラリ。残念ながら、BIOSは16ビットで古く、最新のオペレーティングシステムでは使用できないため、ほとんど無視されます。

ブートローダーはBIOSの一部です。
ダニエルRヒックス

@ダニエル私はより明確にするために書き直しました、ありがとう。
ctrl-alt-delor 14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.