資格道場 › レッスン一覧 › コンピュータ構成要素
コンピュータ構成要素・8/9・10分

磁気ディスクのアクセス時間と容量

ゴール

磁気ディスクのアクセス時間が「位置決め時間+回転待ち時間+データ転送時間」でできていることを説明でき、平均回転待ち時間・セクタ番号から決まる最大容量の計算問題を自力で解けるようになる。あわせて、ストライピングとミラーリングを選択肢で見分けられるようになる。

アクセス時間の内訳とストライピングは、免除試験を中心に何度も出ている定番です。HDD がなぜ遅いのか、RAID でどう速くするのかが分かるので、サーバ構成やストレージ選定の話も理解しやすくなります。

このレッスンで稽古する(用語チェック・過去問)

結論:アクセス時間は3つの時間の足し算

アクセス時間=位置決め時間+回転待ち時間+データ転送時間。この3つの名前と順番を覚えれば、構成を問う問題はほぼ解けます。前の2つをまとめて待ち時間と呼びます。

磁気ディスクは、回転する円盤(プラッタ)の上を磁気ヘッド(読み書きする部品)が動いてデータを読み書きします。最初にヘッドを目的の位置まで動かし、次に目的のデータが回ってくるのを待ち、最後に読み書きします。

flowchart LR
  A["制御装置が読み書きを指令"] --> B["位置決め時間(ヘッドを目的のトラックへ移動)"]
  B --> C["回転待ち時間(目的のセクタが来るまで待つ)"]
  C --> D["データ転送時間(実際に読み書き)"]
  D --> E["読み書き終了"]
名前 何の時間か 短くする方法
位置決め時間(シーク時間) ヘッドを目的のトラックまで動かす時間 ヘッドの移動を速くする
回転待ち時間(サーチ時間) 目的のデータがヘッドの下に回ってくるまでの時間 回転速度を上げる
データ転送時間 データを実際に読み書きする時間 回転速度や記録密度を上げる
待ち時間 位置決め時間+回転待ち時間 上の2つを短くする
アクセス時間 待ち時間+データ転送時間 上の全部

たとえるなら回転寿司です。まず目当ての皿が流れてくるレーンの席へ移動し(位置決め)、皿が目の前に来るまで待ち(回転待ち)、皿を取る(転送)。CPU の前処理・後処理はアクセス時間に含まれないことも押さえておきましょう。

読み書き1回にかかる時間の内訳待ち時間位置決め時間ヘッドを動かす回転待ち時間来るまで待つデータ転送時間読み書きアクセス時間時間の流れ(左から順に進む)
位置決め時間と回転待ち時間を足したものが待ち時間、そこにデータ転送時間を足したものがアクセス時間になる。

ディスクの構造用語と記憶容量

記憶容量は「セクタ→トラック→シリンダ」と掛け算を積み上げて求めます。シリンダ数を掛け忘れると容量は決まらない、というのが出題のポイントです。

用語 意味 イメージ
トラック 円盤上にある同心円1周ぶんの記録領域 陸上競技場のレーン1本(中心が同じ円が何本も並ぶ)
セクタ トラックを扇形に区切った最小の読み書き単位(例:512バイト) レーンを区切った1区画
シリンダ 複数の円盤で、同じ半径にあるトラックの集まり 重ねた円盤を同じ半径で輪切りにした筒
磁気ヘッド 読み書きする部品。アクセスアームの先についている 各面に1つずつある

記憶容量=1セクタのバイト数 × 1トラックのセクタ数 × 1シリンダのトラック数 × シリンダ数

トラックは同心円なので、ヘッドを内側・外側に動かすことで別のトラックへ移ります。これが位置決めです。同じシリンダ内のトラックなら、ヘッドを動かさずに読めます。

上から見た円盤横から見た重ねた円盤太線の輪=トラック色付きの区画=セクタ色線の輪の束=シリンダ同じ半径のトラックの集まりセクタトラックシリンダ記憶容量×セクタ数×トラック数×シリンダ数シリンダ数を掛け忘れると容量は決まらない
トラック・セクタ・シリンダの位置関係と、セクタからシリンダ数まで掛け算を積み上げて記憶容量を出す流れ。

平均回転待ち時間は「半回転ぶん」

平均回転待ち時間=1回転にかかる時間 ÷ 2。目的のデータは、ちょうど目の前にあることもあれば、1周近く待つこともあるので、平均すると半周になります。

1回転の時間は 60秒 ÷ 1分あたりの回転数 で出せます。ミリ秒に直すには1,000倍します(1秒=1,000ミリ秒)。

回転寿司でいえば、皿がどこにあるかは運しだいなので、平均すると「レーン半周ぶん」待つことになります。1周ぶんをそのまま使うと誤答になるように選択肢が作られています。

なお、データ転送速度は「1トラックの容量 × 1秒あたりの回転数」で決まります。回転待ち時間とは関係ありません。

▼ヘッド ●目的のデータ 矢印=待つ回転待ち≒0半周=平均ほぼ1周=最大1回転の時間=60秒÷1分あたりの回転数平均回転待ち時間=1回転の時間÷21回転の時間をそのまま使うと誤答
目的のデータの位置しだいで待ちは0〜ほぼ1周まで変わり、平均すると半周ぶんになる。

セクタ番号のビット数から最大容量を出す

nビットのセクタ番号で区別できるセクタは 2^n 個です。したがって 最大容量=2^n × 1セクタのバイト数 になります。

あとは、問題文で決められた「1Gバイト」の定義で割るだけです。指数の計算は 2^a ÷ 2^b = 2^(a−b) を使います。この知識の出題は少ないので、解き方の型だけ覚えておけば十分です。

ストライピングとミラーリングの違い

ストライピングは、データを細かいブロックに分割して複数台のディスクに分散配置し、同時に読み書きして速くする手法です(RAID0)。ミラーリングは、同じデータを2台に丸ごと書いて壊れても大丈夫にする手法です(RAID1)。

図の問題で「b0 はディスク1、b1 はディスク2…」のように順番に振り分けているならストライピングです。同じ内容が2台に並んでいればミラーリングと判断します。

用語 何をするか 目的
ディスクストライピング データを分割して複数ディスクに分散し、並列にアクセスする 高速化
ディスクミラーリング 同じデータを複数ディスクに複製する 信頼性の向上
ディスクキャッシュ よく使うデータを、ディスクより速いメモリに一時保存する 高速化(台数は増やさない)
ブロック化 複数の論理レコードをまとめて1回で読み書きする 入出力回数の削減
ディスクアットワンス CD-R などに1回で全部を書き込む方式 光ディスクへの書き込み(無関係)

ストライピングは、1冊の本をページごとに4人で分けてコピーすると4倍速く終わる、というイメージです。ただし1台でも壊れるとデータが欠けるので、ストライピング単独では信頼性は上がりません。

ストライピング(RAID0)ミラーリング(RAID1)b0b1b2b3ディスク1b0b2ディスク2b1b3b0b1ディスク1b0b1ディスク2b0b1並列で読み書き→高速化同じ内容が2台→信頼性1台壊れるとデータが欠ける1台壊れてももう1台に残る
ストライピングはブロックを順番に別のディスクへ振り分け、ミラーリングは同じブロックを2台に丸ごと書く。
例題 1

回転数 4,200回/分・平均位置決め時間 5ミリ秒のときの平均待ち時間

回転数が 4,200 回/分で,平均位置決め時間が 5 ミリ秒の磁気ディスク装置がある。この磁気ディスク装置の平均待ち時間は約何ミリ秒か。ここで,平均待ち時間は,平均位置決め時間と平均回転待ち時間の合計である。

ア 7
イ 10
ウ 12
エ 14

出典:平成27年度 春期 基本情報技術者試験 午前 問12

解き方と答えを見る
  1. 求めるものを確認する:平均待ち時間=平均位置決め時間+平均回転待ち時間
  2. 1回転の時間を出す:60秒 ÷ 4,200回 = 0.014285…秒
  3. ミリ秒に直す:0.014285…秒 × 1,000 = 約14.3ミリ秒
  4. 平均回転待ち時間は半回転ぶん:14.3ミリ秒 ÷ 2 = 約7.1ミリ秒
  5. 平均位置決め時間を足す:5ミリ秒 + 7.1ミリ秒 = 約12.1ミリ秒
  6. いちばん近い選択肢を選ぶ:約12ミリ秒

答え:ウ(約12ミリ秒)。1回転ぶんの14.3ミリ秒を足すと約19ミリ秒になり、どの選択肢とも合わない。

例題 2

28ビットのセクタ番号・1セクタ512バイトで管理できる最大容量

1セクタが512バイトの磁気ディスクを,28ビットで表すセクタ番号で管理するとき,最大何Gバイトの容量まで管理できることになるか。ここで,512×2^21を1Gバイトとする。

ア 32
イ 64
ウ 128
エ 256

出典:基本情報技術者試験 科目A免除 修了試験 20130623 実施分 問15

解き方と答えを見る
  1. 区別できるセクタ数を出す:28ビットなので 2^28 個
  2. 最大容量をバイトで出す:2^28 × 512 バイト = 512 × 2^28 バイト
  3. 問題文の定義で1Gバイトを確認する:1Gバイト = 512 × 2^21 バイト
  4. 割り算する:(512 × 2^28) ÷ (512 × 2^21) = 2^(28−21) = 2^7
  5. 計算する:2^7 = 128

答え:ウ(128Gバイト)。指数の引き算を間違えると 32・64・256 を選んでしまう。

要点(試験直前に読む)

  • アクセス時間=位置決め時間+回転待ち時間+データ転送時間。前の2つの合計が「待ち時間」。
  • アクセス時間は、回転速度を上げるか位置決めを速くすると短くなる。CPUの前処理・後処理は含まない。
  • 平均回転待ち時間=(60秒 ÷ 回転数) ÷ 2。ミリ秒に直すときは1,000倍する。
  • 記憶容量=セクタのバイト数 × トラックあたりのセクタ数 × シリンダあたりのトラック数 × シリンダ数。
  • nビットのセクタ番号で管理できる容量は 2^n × セクタサイズ。指数は 2^a ÷ 2^b = 2^(a−b) で計算する。
  • 分割して分散するならストライピング(RAID0・高速化)、複製するならミラーリング(RAID1・信頼性)。

ひっかけ

  • 回転待ち時間に1回転ぶんを使わせる罠。「平均」とあれば必ず半回転(÷2)にする。
  • 図問題で「待ち時間」と「回転待ち時間」を入れ替える罠。待ち時間は位置決めと回転待ちの両方を覆う長い区間。
  • アクセス時間にCPUの前処理・後処理を含める選択肢や、容量をトラック容量×トラック数だけで決まるとする選択肢は誤り。シリンダ数が抜けている。
  • 「データ転送速度は回転待ち時間で決まる」は誤り。転送速度は回転速度と記録密度で決まる。
  • 分割・分散の説明にミラーリングやディスクキャッシュを並べる罠。「並列」「分散配置」「細分化」とあればストライピング。

用語(15)

アクセス時間 あくせすじかん
読み書きを指令してから、データの読み書きが終わるまでの時間で、位置決め時間・回転待ち時間・データ転送時間の合計。
⚠ 待ち時間(位置決め+回転待ち)とは違い、データ転送時間まで含む。CPUの前処理・後処理は含まない。
位置決め時間 いちぎめじかん(シーク時間)
磁気ヘッドを目的のトラックまで移動させるのにかかる時間。
⚠ 回転待ち時間は、ヘッドが着いた後に円盤の回転を待つ時間。ヘッドの移動か、円盤の回転待ちかで見分ける。
回転待ち時間 かいてんまちじかん(サーチ時間)
目的のセクタがヘッドの下に回ってくるまで待つ時間で、平均すると半回転ぶん。
⚠ 待ち時間(位置決め+回転待ちの合計)と取り違えやすい。「回転」が付くかどうかで判断する。
待ち時間 まちじかん
位置決め時間と回転待ち時間を合わせた、データ転送が始まるまでの時間。
⚠ 回転待ち時間は待ち時間の一部。図問題では、待ち時間が位置決めと回転待ちの両方を覆う区間になる。
データ転送時間 でーたてんそうじかん
データを実際に読み書きする時間で、データ量 ÷ データ転送速度で求める。
⚠ データ転送速度は回転速度と記録密度で決まり、回転待ち時間とは無関係。
平均回転待ち時間 へいきんかいてんまちじかん
1回転にかかる時間の半分で、60秒 ÷ 回転数 ÷ 2 で求める。
⚠ 1回転ぶんの時間をそのまま使うのは誤り。必ず2で割る。
トラック とらっく
円盤上にある同心円1周ぶんの記録領域。
⚠ シリンダは、複数の円盤で同じ半径にあるトラックをまとめたもの。
セクタ せくた
トラックを区切った、ディスクを読み書きする最小単位(例:512バイト)。
⚠ トラックは1周全体、セクタはその一部分。
シリンダ しりんだ
複数の円盤で同じ半径にあるトラックの集まりで、ヘッドを動かさずに読み書きできる範囲。
⚠ 記憶容量の計算ではシリンダ数も掛ける必要がある。トラック容量とトラック数だけでは決まらない。
磁気ヘッド じきへっど
アクセスアームの先についていて、円盤の磁気を読み書きする部品。
ディスクストライピング でぃすくすとらいぴんぐ(RAID0)
データをブロックに分割して複数台のディスクに分散配置し、並列に読み書きして高速化する手法。
⚠ ミラーリングは同じデータを複製して信頼性を上げる手法。分割・分散ならストライピング、複製ならミラーリング。
ディスクミラーリング でぃすくみらーりんぐ(RAID1)
同じデータを2台以上のディスクに書き込み、1台が壊れても読めるようにする手法。
⚠ 目的が高速化ならストライピング、信頼性ならミラーリング。
RAID Redundant Arrays of Inexpensive Disks(レイド)
複数のディスクを組み合わせて1台のように扱い、速度や信頼性を高める技術。
⚠ RAID0=ストライピング、RAID1=ミラーリング。番号と中身を対応させて覚える。
ディスクキャッシュ でぃすくきゃっしゅ
ディスクのデータの一部を高速なメモリに置き、読み書きを速くする仕組み。
⚠ ストライピングと違い、複数ディスクへの分散ではなく、メモリへの一時保存で速くする。
ブロック化 ぶろっくか
複数の論理レコードを1つのブロックにまとめて読み書きし、入出力の回数を減らす手法。
⚠ 複数台のディスクへの分散とは無関係。

このレッスンの過去問

このレッスンで稽古する