私は試験勉強中ですが、次の問題で行き詰まっています。
1 枚のディスクには 20000 トラックがあり、速度は 7200 RPM、シーク時間は 1 ミリ秒です。質問では、ディスク上のすべてのトラックを読み取るのに必要な合計時間を計算するように求められています。ヒントが 1 つあります。トラックの転送時間は、ディスク ヘッドの下でトラックが 1 周するのに必要な時間です。
まず転送時間を調べようとしましたが、正しいかどうかわかりません。7200/3600 になります。
これをどう解決すればいいでしょうか?
答え1
試験問題のように尋ねられる場合、問題は実際にはコンピューターやハードディスクに関するものではないと思います。むしろ基礎に関するものです。
- 7200 RPMの場合、ディスクは
(7200/60) = 120
1秒間に回転することを意味します - ディスクが1回転するたびに、理論的には1つのトラックを完全に読み取ることができます。つまり、1つのトラックの読み取りには
(1/120)s
さて、1ms のシーク時間についての質問です。
- 連続読み取りが可能な場合は、シーク時間を 1 回だけ追加する必要があります。つまり、トラックごとにシーク時間を 1 回追加することになります
(1/120)s
。これは単純化しすぎているように思えます。 - より現実的に言えば、質問が、
1ms (1/1000)s
あるトラックから次のトラックに切り替えるために追加のトラックが必要であることを示唆していると仮定すると、回転のみで示唆されるように、毎秒 120 トラックを読み取ることはできません。 - 回転とシーク時間を考慮すると、各トラックの
(1/1000 + 1/120)s
読み取りにかかる時間が決まります。
注記:
@sawdust がコメントで正しく指摘しているように、この回答では複数の簡略化が使用されています。これは、質問にこれ以上の情報がなく、基本的な内容に取り組もうとしたためです。質問がもっと複雑な場合 (または試験問題ではなく実際のハードウェアを扱う場合)、次の要素を考慮する必要があります。
- ディスクには複数の(たとえば
N
)プラッタがあり、20000 トラックはプラッタ全体に分散されますN
。一般に、プラッタは両面で使用できます。[1] したがって、2N
ドライブの読み取り/書き込みヘッドのそれぞれにある 20000 トラックは、20000 シリンダではなくシリンダです。これにより、複数のトラックを同時に20000/(2N)
読み取ることができます。この場合、トラックの読み取りには 時間がかかります。2N
2N
(1/120)s
- シークタイムは固定ではなく
1ms
、通常は以下の組み合わせになります。ヘッドシーク時間ヘッドが正しいシリンダーに移動されます(ドライブ上の位置によっては常に一定ではない場合があります)。プラス回転待ち時間。これは、ヘッドが正しいセクターの上になるまでディスク自体が回転する必要があることを意味します。平均すると、回転待ち時間は、ディスクが 1 回転するのにかかる時間の半分に簡略化される可能性があります。したがって、回転待ち時間は、(1/240)s
新しいシリンダごとに約 1 つになる可能性があります。 - 実際のドライブでは、データを正しく読み取れない場合に、一定のレイテンシの問題が発生することがあります。これは、ブロックが破損しているか読み取りが困難な場合に発生し、ドライブはヘッドの位置やパラメータを変えてセクターを読み取って、データを取得できる可能性を高めようとします。結果として生じるレイテンシは、新しい市販のドライブでも見られることがあり、タイムリーなディスク読み取りに依存する実際のシステムを計画する際には考慮する必要があります。そのため、1 回転でトラックが完全に読み取られるとは必ずしも想定できません。この問題は深刻になる可能性があるため、多くのエンタープライズ ドライブでは、セクターの読み取りを再試行する許容時間を制限する TLER などの機能を提供しています。[2]
[1]:Wikipedia: シリンダーヘッドセクター
[2]:Western Digital: デスクトップ エディション (WD Blue、WD Green、WD Black) と RAID (Enterprise) エディション ドライブの違い