web-dev-qa-db-ja.com

SATA(AHCIモード)-BIOSがHDDから起動できるのに、OSにAHCIドライバーが必要なのはなぜですか?

AHCIとSATAの関係は何ですか? BIOSがSATAハードディスクの起動方法を知っているのに、OSがAHCIドライバーなしでSATAコントローラーを操作できないのはなぜですか?

特定のAHCIドライバーが必要になるように、SATAコントローラーの違いは何ですか?

BIOSには、SATA(AHCIモード)HDDから操作および起動するための「ドライバー」が内蔵されていますか?

2
user4691

まず、BIOSにはオンボードAHCIコントローラー用のドライバーが含まれています。また、コントローラーがオンボードではなくPCIカード上にある場合、カードはコントローラー用のBIOSドライバーを含むPCIオプションROMを提供します。

ファームウェアがUEFIをサポートしている場合、ファームウェア(またはオプションROM)にはコントローラー用のUEFIドライバーも含まれます。

PCが起動できる他のすべてのコンポーネント(通常はUSB、CD-ROM、有線ネットワーク)についても同じことが言えます。他のコンポーネントには通常、BIOS/UEFIドライバーがまったくありません。

オペレーティングシステムcan BIOSまたはUEFIドライバーを使用します(たとえば、DOSまたはWindows 95はそうします)が、最近のほとんどのオペレーティングシステムは、面倒を避け、BIOSドライバーの制限を回避し、代わりに独自のドライバーを使用します。ドライバー形式。

BIOSドライバーの一般的な制限:

  • 通常、読み取りパフォーマンスが低下し、書き込みパフォーマンスがさらに低下します
  • 最初のプロセッサ/コアのみがアクティブ化されている場合にのみサポートされます
  • 16ビットモードでのみ機能します(これは、シングルタスクと640KBのアドレス可能なメモリを意味します)
  • a20ゲートがクリアされている場合にのみ機能します(これは1MBのアドレス可能なメモリを意味します)

つまり、起動時に、最新のOSは、16ビットと32ビット/ 64ビットのシングルタスクモードを繰り返し切り替え、OSカーネルと少なくともディスクドライバーをハイに読み取るまで、A20ゲートを繰り返し切り替える必要があります。メモリ(今日では通常640Kでは不十分です);その後、マルチタスクモードに切り替わり、ロードされたカーネルとディスクドライバーを使用して残りのOSのロードを続行します。

UEFIの制限はそれほど悪くはありませんが(UEFIドライバーは64ビットモードで実行されますが、シングルタスクモードと1つのコアのみがアクティブ化されている必要があります)、起動後にUEFIドライバーを使用しようとするOSがわからないほど悪いです-これはおそらく、純粋なUEFI用のWebブラウザーを作成した人がいない理由でもあります(Webブラウザーは本質的にマルチスレッドであり、パフォーマンスの高いシングルスレッドWebブラウザーを作成するのは困難です)。

4
mihi