記憶容量,シリンダ,トラック,セクタ,転送速度,シーク時間,サーチ時間,ブロック化、ブロック化因数、ブロック間隔
磁気ディスク(magnetic disk)は、単にディスク、ハードディスクあるいはHDD(Hard Disk Driver)ともいいます。パソコンがの普及初期には、外部記憶装置として、プロッピーディスク(薄いプラスチックの円盤)が用いられており、それとの対比で「ハード」といわれたのです。
磁気ディスクは、パソコンの筐体の内部に組み込まれている内蔵ディスクと取外しのできる外付けディスクがあります。内蔵ディスクは仮想記憶方式の主要要素であり不可欠な存在で、外付けディスクはデータのバックアップ用に広く用いられています。近年はより高速なSSDを搭載したパソコンが普及してきましたが、それでも磁気ディスクは主流の座を保っています。
磁気ディスク装置は,図のように,両面に磁性体を塗布した数枚の円盤形状の磁気ディスク(プラッタ)とその磁気面に位置づけして情報を読込み書出しするスイングアーム機構から構成されています。
スイングアームの先端には磁気ヘッドがあり、プラッタの磁気のON/OFFをキャッチしたり、プラッタの磁気をON/OFFにすることができます。プラッタが回転し十分高速になると、空気の流れにより磁気ヘッドはわずかに浮上します。磁気面と接触せずにアクセスが行われるので磁気面の損傷が防げます。
すべてのスイングアームは1つのスイングアーム回転軸に固定されているので、すべての磁気ヘッドは同じ動きでプラッタ上を移動します。スイングアープの回転によりプラッタの中心からの距離が決まり。プラッタの回転により中心からの角度がきまるので、この機構ですべての記録位置に磁気ヘッドを移動することができます。
以下、磁気ディスクの容量と転送速度の計算例を示しますが、磁気ディスクの性能は急激に向上しています。それにも関わらず、ここでは数十年前の諸元を用いています(修正するのが面倒だという理由です)。
すなわち、磁気ディスクの総容量は、
総容量=記録面×トラック数×セクタ数×1セクタのバイト数
で計算できます。
ディスクからデータを読み出したり書き込んだりする時間を計算します。
総時間=[シーク時間]+[サーチ時間]+[転送時間]
上記の性能の説明は、データが途切れることなく連続的に記録されていることが前提でした。ところが実際の売上ファイルのデータなどを対象にしたときには、このような性能を得ることができません。
話を単純にするために、ファイルの1レコードが80バイトの固定長であるとし、セクタを500バイトだとします。
プログラムは、ファイルから1レコードずつ読み込んで処理をします。ところが磁気ディスクでは1回に1セクタを読込みます。そうすると、1セクタには1レコードしか入れられません。
容量では1セクタで500-80=420バイトの無駄が生じます。
転送速度では、1回のアクセス時間で80バイトした転送できません。
これではあまりにも効率が悪いので、OSの機能により複数のレコードをブロックとして一度に読込みバッファに保存し、プログラムの読込み命令にはバッファから1レコードずつ渡すような仕組みになっています。
1ブロック=2レコードだとします。それをブロック化因数=2といいます。ブロックとブロックの間には、切れ目として10バイトのブロック間隔が必要だとします。
レコードはセクタをまたいで記録することはできないので、1セクタに入れられるのは、
2×80+10 + 2×80+10 + 2×80=500
ですから、6レコードになり、容量効率がよくなります。