私はいつもハードドライブがデータの最初のビットをどのように見つけるのか疑問に思っていました。
ハードドライブがスピンアップするとき、読み取るヘッドが別の位置に移動するまで、読み取るものはすべてデータの循環ストリームである必要があります。
しかし、そのような循環ストリームでは、ドライブは最初のビットと最後のビットがどこにあるかをどのようにして知っているので、正しい順序でデータを渡すことができますか?
ディスクから読み取ります。
ディスク上のデータは(@psusiが言うように)構造化されているだけでなく、エンコードされています。エンコードにより、記録されたデータがセクター見出しの位置マーカーと混同されないことが保証されるため、ターゲットの位置マーカーが見つかるまで循環ストリームを読み取ることができます。
私が理解しているように、最近のハードドライブはそれを完全には実行しません。サークル全体をバッファーに読み込み、各セクターの場所を追跡し、バッファーを使用して要求されたデータを送り返します。
更新:
磁気媒体は、2つの重要な特性を持つ磁場を持つ材料です。1)それ自体では決して変化しません。2)記録デバイスは、表面上の任意の点で磁場の向きを変えることができます。メディアを読み取るとき、センサーは、フィールドがセンサーに向いている場所と、フィールドがセンサーから離れている場所を検出します。センサーが表面を横切ると、これらの極性遷移のタイミングが検出されます。 デコードの最初のレイヤーは、これらのタイミングをビット値に変換します。このプロセスには物理的に必要な不確実性があるため、エンコーディングでは同じ極性の長いストレッチを必要としてはなりません。つまり、 ランレングス制限コーディング (RLL)である必要があります。
ハードドライブの設計の詳細は一般に企業秘密ですが、セクターマーカーがセクターコンテンツに表示されないようにするには、基本的に2つの方法があります。
コンテンツデータのエンコードから決して発生しない特別な値を許可するRLLを設計します。これらの特別な値は、セクター境界のマーキングだけでなく、エラー訂正やその他の二次的な目的にも使用できます。
マーカーの値のみがマーカーに表示されるようにする2番目のエンコード層を使用します。これは URLエンコーディング に少し似ており、URLで特殊文字を「非表示」にすることができますが、追加できる文字数を制限するのと同等の追加の制約があるため、最終的には base64 encoding に似ています。
したがって、読み取りヘッドは表面を横切って磁気極性の変化を検出し、それらの変化のタイミングを使用して、対応するビット値のシーケンス(おそらく、格納されたデータを表さない例外的な値を含む)を決定し、そのシーケンスを使用して読み取るセクターとそれらのセクターの内容を決定します。セクターの内容が決定されると、データはソリッドステートバッファーに保存され、および/またはRAMバッファーに保存され、および/または要求を満たすために送り返されます。
データは、1と0の任意のストリームとして書き込まれません。それはセクターで書かれています。各セクターには、ユーザーデータのペイロードとヘッダーがあります。ヘッダーには、エラー訂正コードのほか、セクターの開始を識別する特別な同期フィールドとセクター番号が含まれているため、ドライブはセクターの開始を検出したタイミングとセクターを識別できます。
Psusiは正しい(ディスク上のデータはstructuredであり、コンピューターのさまざまな部分がその構造のさまざまな部分を使用する)が、実際には質問に答えません。
ドライブは何も「認識」していません。ディスク上のマーカーを読み取る(通常は工場で書き込まれるか、ドライブヘッド自体によって)、ディスクからデータブロックを読み取る、またはデータブロックをディスクに書き込む、またはディスクが不良または損傷しているか、ディスク上の特定の場所に移動する必要がある。それが「知っている」ことのすべてです。リーディングヘッドは、それ自体で他の場所に移動することを決定しません。
あなたが探している答えは2つの部分に分かれています:
1)ハードウェアコントローラー
2)ファイルシステム
あなたが言ったように、(SSDのような他のテクノロジーとは対照的に)HDDでは、実際のデータはパターン化された磁場を保持する同心の円形リングとして丸い金属板に書き込まれます。このデータを保持するプラッターの上には、ビニールレコードプレーヤーのように、データを読み書きするために動き回る書き込みヘッドがあります。それが移動する大皿は、回転を制御する電気モーターに取り付けられています。
ハードウェアコントローラーは、オペレーティングシステムとハードドライブ間のインターフェイスとして機能します。コントローラは、書き込みヘッドの位置とプラッタの回転を読み取ることができ、この情報を使用して、読み取りと書き込みのためにヘッドとプラッタを配置する方法を決定します。これは、オペレーティングシステムからの読み取り要求と書き込み要求を制御信号に変換して、書き込みヘッドを移動し、プラッターを回転させ、オペレーティングシステムからのパラレルデータを単一のシリアルデータラインに変換します。また、このシリアルラインを分割し、各ピースを配置する物理的な場所またはセクターを決定し、この情報をファイルシステムで指定された方法で記録します。
ファイルシステムは、データを保存する方法と場所の仕様です。コンピューターのオペレーティングシステムは、このファイルシステムを解釈する方法を知っており、この知識を使用してハードウェアコントローラーと適切に通信します。この場合、データの円形リングをセクターと呼ばれる使用可能なセグメントに分割し、これらのセクターが物理的に配置されている場所をファイルシステムに通知します。ファイルシステムは、各セクターに一意の番号であるアドレスを与えます。このアドレスは、ハードウェアコントローラーによって特定のプラッターローテーションと読み取りヘッド位置に変換され、読み取りまたは書き込みが開始されます。
詳細については、ウィキペディアの記事の以下のセクションが非常に役立ちます。
イントロとセクション3.1「スペース管理」をご覧ください: https://en.wikipedia.org/wiki/File_system
セクション2.1「磁気記録」を参照してください: https://en.wikipedia.org/wiki/Hard_disk_drive#Magnetic_recording
他の回答に加えて、確かに使用されている(および使用される可能性がある)ハードディスクには、キャリブレーション/位置決めデータ用に予約された1つのプラッター(シリンダー/ヘッド/セクターの用語で「ヘッド」)があり、ユーザーデータストレージにはまったく使用されません。 。