2016-12-16 5 views
-1

私はOS開発を学んでおり、私は暫定レベルです。シンプルなブートローダを作った。ディスク上の他のファイル(HDDまたはUSBドライブ)にアクセスするには、どのアドレッシングモードを使用するのですか(CHSまたはLBAまたはINT 13h拡張子)。ディスクにアクセスするために使用するアドレッシングモードはどれですか?

どのアドレッシングモードが非常に効率的ですか(つまり、ほとんどのドライブで使用できます)?

おかげ

すべての
+1

どのアドレッシングモード? 'INT 13h' BIOS関数は、ファイリングシステムについては何も知らず、生のディスクI/Oしか知らない。ファイリングシステムを実装する必要のあるOSを作成しています。 –

+0

だから、どうすればいいですか? –

答えて

5

まず、INT13hの拡張子は、APIの拡張機能ではなく、HDアドレス指定方法です。


BIOSを使用するのかハードウェアのアクセスを行うのかを決める必要があります。
BIOSを使用することは、16ビットインターフェイスを提供するため、実際的ではありません。しかし、使い方はとても簡単です。この場合、アドレッシング方法としてLBAを使用します。

LBAはラジアンのような度合いです。 これははるかに自然な単位で、504   MiBと7.9   GiBの制限を破ります。 little reason to use CHSがあります。 CHSは、HDDの公開市場への普及に先立つ歴史的な成果物である。

直接ハードウェアアクセスを使用する場合は、LBAのみを使用できます。執筆の時間、現在ATA/ATAPI 8 Command Set非推奨CHS時:

基準でATA/ATAPI-5およびそれ以前、CHS変換を定義しました。この変換は廃止されましたが、 が実装されている場合は、ATA/ATAPI-5で定義されているように実装されます。

ハードウェアの直接アクセスでディスクにアクセスするのはまれではありませんが、ディスクコントローラにアクセスするには、少なくとも基本的なPCI/PCIeまたはUSBバスドライバが必要です。これらのコマンドで使用されるプロトコルを実装して、ディスクにコマンドを発行するためのPCI/PCIeデバイス)と、ドライバーのためのIDEAHCINVMe(例えばSCSI and variantsATA/ATAPIMMC、​​など)。

私はINT13h拡張を使用すると思います。このようなシナリオでは、BIOSが提供する64ビットLBAが最適なアドレッシング方法です。

+0

BIOSを使用して実際のフロッピーメディアを読み取っている場合、ほとんどのコントローラはフロッピーデバイスのLBA(拡張BIOSサービス経由)をサポートしていませんでした。理由はまったくないとは言いません。私はまだアクティブなシステムにUSB以外のフロッピードライブがあり、フロッピーのLBAはサポートしていません。技術的に言えば、あなたのコードが標準のフロッピー(登録商標)媒体上で実行されることを知っているなら、おそらくCHSを使用することは合理的な選択である。 –

+0

良い点@MichaelPetch!ありがとう、私はあなたの洞察力で答えを更新しました。 –

関連する問題