最終更新日:2026年8月2日
fe fe-technology storage magnetic-disk
まず結論
磁気ディスクの平均待ち時間は、次の2つを足して求めます。
平均待ち時間
=
平均位置決め時間
+
平均回転待ち時間
平均回転待ち時間は、ディスクが1回転する時間の半分です。
平均回転待ち時間
=
60,000 ÷ 回転数 ÷ 2
ここで 60,000 は、1分をミリ秒に直した値です。
たとえば、回転数が4,200回/分なら、
60,000 ÷ 4,200 ÷ 2
= 約7.14ミリ秒
平均位置決め時間が5ミリ秒なら、
5 + 7.14
= 約12.14ミリ秒
となります。
平均回転待ち時間は、1回転時間の半分。
直感的な説明
レコードプレーヤーをイメージすると分かりやすいです。
針を目的の溝まで移動する
→ 位置決め時間
目的の曲が針の位置まで回ってくるのを待つ
→ 回転待ち時間
曲を再生する
→ データ転送時間
磁気ディスクでも同じように、
ヘッドを目的のトラックへ動かす
↓
目的のデータがヘッドの下まで回ってくるのを待つ
↓
データを読み書きする
という順番で処理します。
今回の平均待ち時間は、読み書きを始める前までの時間です。
定義・仕組み
平均位置決め時間
平均位置決め時間は、磁気ヘッドを目的のトラックまで移動させる平均時間です。
シークタイムとも呼ばれます。
ヘッドを横方向へ移動
→ 平均位置決め時間
磁気ディスクでは、目的のデータが保存されているトラックまでヘッドを移動する必要があります。
平均回転待ち時間
平均回転待ち時間は、目的のデータが磁気ヘッドの位置まで回ってくるのを待つ平均時間です。
サーチタイムと呼ばれることもあります。
ディスクが回転する
↓
目的のデータがヘッドの下へ来る
なぜ半回転なのか
目的のデータが、磁気ヘッドのすぐ近くにある場合もあれば、ほぼ1回転先にある場合もあります。
最短
→ ほぼ0回転
最長
→ ほぼ1回転
平均
→ 半回転
そのため、平均回転待ち時間は1回転にかかる時間の半分です。
データ転送時間
データ転送時間は、目的のデータ位置へ到達した後、実際に読み書きする時間です。
位置決め
→ ヘッドを移動
回転待ち
→ データが来るのを待つ
転送
→ データを読み書きする
このテーマは、基本情報技術者試験のコンピュータ構成要素に関係します。公式の出題範囲やシラバスは、IPA:基本情報技術者試験 から確認できます。
科目Aでどう出る?
科目Aでは、次のような情報から平均待ち時間や平均アクセス時間を求めます。
- ディスクの回転数
- 平均位置決め時間
- 転送するデータ量
- データ転送速度
問題文が何を求めているかによって、使う時間が変わります。
平均待ち時間
平均待ち時間
=
平均位置決め時間
+
平均回転待ち時間
平均アクセス時間
平均アクセス時間
=
平均位置決め時間
+
平均回転待ち時間
+
データ転送時間
問題文に転送量や転送速度が与えられていない場合は、データ転送時間を求めないことが多いです。
回転数から1回転時間を求める
回転数が N回/分 の場合、1回転にかかる時間は次の式で求めます。
1回転時間
=
60秒 ÷ N
ミリ秒で求める場合は、
1回転時間
=
60,000ミリ秒 ÷ N
です。
たとえば、4,200回/分なら、
60,000 ÷ 4,200
= 約14.29ミリ秒
これが1回転にかかる時間です。
平均回転待ち時間を求める
平均では半回転待つため、
平均回転待ち時間
=
1回転時間 ÷ 2
です。
したがって、
60,000 ÷ 回転数 ÷ 2
で一気に計算できます。
4,200回/分なら、
60,000 ÷ 4,200 ÷ 2
= 約7.14ミリ秒
となります。
計算例
回転数4,200回/分、平均位置決め時間5ミリ秒の磁気ディスクを考えます。
1回転時間を求める
60,000 ÷ 4,200
= 約14.29ミリ秒
平均回転待ち時間を求める
14.29 ÷ 2
= 約7.14ミリ秒
平均位置決め時間を足す
5 + 7.14
= 約12.14ミリ秒
したがって、平均待ち時間は約12ミリ秒です。
別の回転数で確認する
7,200回/分の場合
1回転時間
=
60,000 ÷ 7,200
= 約8.33ミリ秒
平均回転待ち時間は、
8.33 ÷ 2
= 約4.17ミリ秒
です。
10,000回/分の場合
1回転時間
=
60,000 ÷ 10,000
= 6ミリ秒
平均回転待ち時間は、
6 ÷ 2
= 3ミリ秒
です。
回転数が大きいほど、平均回転待ち時間は短くなります。
試験での判断手順
この種類の問題では、次の順番で解きます。
1. 求めるものが待ち時間かアクセス時間か確認する
2. 1分を60,000ミリ秒に直す
3. 回転数で割って1回転時間を求める
4. 2で割って平均回転待ち時間を求める
5. 平均位置決め時間を足す
6. 必要ならデータ転送時間も足す
式だけで覚えるなら、次の形です。
平均待ち時間
=
平均位置決め時間
+
60,000 ÷ 回転数 ÷ 2
よくある誤解・混同
1回転時間をそのまま足す
誤りです。
平均回転待ち時間は、1回転時間の半分です。
1回転時間
→ 約14ミリ秒
平均回転待ち時間
→ 約7ミリ秒
回転数を60で割る
4,200 ÷ 60
で求まるのは、1秒当たりの回転数です。
1回転にかかる時間を求めるには、逆数にします。
60 ÷ 4,200
秒とミリ秒を混ぜる
1秒
=
1,000ミリ秒
1分
=
60,000ミリ秒
計算を始める前に、単位をそろえると安全です。
平均位置決め時間を足し忘れる
平均回転待ち時間だけでは、平均待ち時間になりません。
平均待ち時間
=
位置決め時間
+
回転待ち時間
平均待ち時間と平均アクセス時間を混同する
データ転送時間を含むかどうかが違います。
平均待ち時間
→ 位置決め+回転待ち
平均アクセス時間
→ 位置決め+回転待ち+転送
サーチタイムとシークタイムを混同する
このブログでは次のように区別します。
シークタイム
→ ヘッドを目的のトラックへ移動する時間
回転待ち時間
→ 目的のデータが来るのを待つ時間
用語は教材によって表現が異なる場合があるため、問題文の定義も確認します。
どんな場面で使う?
HDDの性能比較
回転数が高いHDDほど、平均回転待ち時間は短くなります。
5,400rpm
→ 回転待ち時間が長め
7,200rpm
→ より短い
10,000rpm
→ さらに短い
ストレージ設計
大量のランダムアクセスが発生するシステムでは、位置決め時間や回転待ち時間が性能に影響します。
SSDとの比較
SSDには回転するディスクや移動する磁気ヘッドがありません。
そのため、磁気ディスクのような回転待ち時間やシークタイムは基本的にありません。
HDD
→ 機械的な待ち時間がある
SSD
→ 機械的な回転待ちがない
科目Bでどう使う?
科目Bでは、単位変換や複数段階の計算処理として扱えます。
Pythonでは、次のように計算できます。
def average_wait_time_ms(rpm: float, seek_time_ms: float) -> float:
if rpm <= 0:
raise ValueError("回転数は0より大きくしてください。")
if seek_time_ms < 0:
raise ValueError("位置決め時間は0以上にしてください。")
one_rotation_ms = 60_000 / rpm
average_rotational_latency_ms = one_rotation_ms / 2
return seek_time_ms + average_rotational_latency_ms
result = average_wait_time_ms(4200, 5)
print(f"{result:.2f} ms")
出力は次のようになります。
12.14 ms
途中結果も確認したい場合は、次のように分けます。
rpm = 4200
seek_time_ms = 5
one_rotation_ms = 60_000 / rpm
average_rotation_wait_ms = one_rotation_ms / 2
average_wait_ms = seek_time_ms + average_rotation_wait_ms
print(f"1回転時間: {one_rotation_ms:.2f} ms")
print(f"平均回転待ち時間: {average_rotation_wait_ms:.2f} ms")
print(f"平均待ち時間: {average_wait_ms:.2f} ms")
まとめ(試験直前用)
- 平均待ち時間は、平均位置決め時間と平均回転待ち時間の合計
- 平均位置決め時間は、ヘッドを目的のトラックへ移動する時間
- 平均回転待ち時間は、目的のデータが来るのを待つ時間
- 1分は60,000ミリ秒
- 1回転時間は
60,000 ÷ 回転数 - 平均回転待ち時間は1回転時間の半分
- 一気に求める式は
60,000 ÷ 回転数 ÷ 2 - 平均アクセス時間にはデータ転送時間も含む
- 秒とミリ秒を混ぜない
- 回転数が高いほど平均回転待ち時間は短い
回転数の問題は、1回転時間を出してから半分にする。