基本情報のディスクアクセス時間を回転数と転送時間の例題で理解する

磁気ディスクの円盤とヘッドを示す学習用イメージ

基本情報のディスクアクセス時間は、平均シーク時間・平均回転待ち時間・データ転送時間を分けると計算できます。回転数を見てすべてを半分にしたり、転送速度だけで答えを出したりすると、読み取りが終わるまでの時間を正しく求められません。

この記事では、rpmをミリ秒に直す手順から、セクタ数やトラック容量を使う計算、複数ブロックを読むときの条件まで、独自の例題で確認します。平均アクセス時間を求める問題を想定し、どの待ち時間を何回足すのかまで整理していきましょう。

この記事のポイント
  • ヘッドの移動・回転待ち・転送の違いと足し合わせ方
  • 毎分回転数から平均回転待ち時間を求める手順
  • 転送速度・トラック容量・セクタ数を使う例題
  • 連続読み出しと独立したアクセスで待ち時間の回数を変える判断
無料

基本情報技術者試験 過去問アプリ

本番形式で繰り返し解ける。スキマ時間に1問から

2,000問以上収録
無料で過去問を解く
目次

基本情報のディスクアクセス時間の求め方

円盤と読み取りヘッドが見える磁気ディスク装置の構造イメージ

平均アクセス時間は三つに分ける

磁気ディスク装置のデータ読み取りが完了するまでを扱う基本的な問題では、平均アクセス時間=平均シーク時間+平均回転待ち時間+データ転送時間として計算します。シークは位置決め、回転待ちは目的のデータが来るのを待つ動作、転送は実際の読み出しに対応します。

たとえば、ヘッドが別のトラックにある状態なら、まず目的のトラックへ移動します。そこに着いても、必要なデータの先頭がヘッドの真下にあるとは限りません。先頭が回ってくるまで待ったあと、必要な範囲を読み出す、という順序で考えると三つの時間を取り違えにくくなります。

スクロールできます
項目何をしている時間か問題文からの求め方
平均シーク時間ヘッドを目的のトラックへ移動する与えられた平均値を使う
平均回転待ち時間データの先頭がヘッドの位置に来るのを待つ通常の平均モデルでは1回転時間の半分
データ転送時間必要なデータを読み出すデータ量÷転送速度、または回転時間の割合

三つの要素を足す考え方は、京都大学の計算機基礎資料でも説明されています。ただし、資料や設問によって「アクセス時間」が読み出し開始までを指す場合もあります。名前だけで決めず、読み取り完了までか、転送前の待ち時間までかを問題文で確かめてください。

トラックとセクタを計算につなげる

トラックは、円盤上の同心円状の記録領域です。セクタは、そのトラックを区切った記録単位と考えます。同じトラックのデータなら、ヘッドの半径方向の位置を変えず、円盤の回転に合わせて読み取れます。シークと回転待ちは、どちらも場所に関係しますが、移動する方向が異なります。

1トラックを一周する間に読めるデータ量が分かれば、転送時間を回転時間の一部として求められます。たとえば1トラックの4分の1に相当するデータを連続して読むなら、転送は1回転時間の4分の1です。平均回転待ちの2分の1とは理由が異なるので、別々に計算するのがポイントです。

シリンダは、複数の記録面で同じ半径にあるトラックの集まりです。ただし、1トラックの容量を問われているのに、記録面数を掛けてシリンダ全体の容量へ変えてはいけません。与えられた単位が「バイト/トラック」なのか「バイト/シリンダ」なのかを、式へ入れる前に確認します。

rpmから半回転の時間を求める

ヘッドの位置まで円盤が回転する仕組みを示すイメージ

rpmはrevolutions per minuteの略で、1分間に何回転するかを表します。回転数をR rpmとすると、1回転にかかる時間は60÷R秒です。1秒は1,000ミリ秒なので、ミリ秒で求めるなら60,000÷Rとなります。

平均回転待ち時間=60,000÷R÷2=30,000÷Rミリ秒です。最初は短い式だけを暗記するより、「1分を回転数で割る→半回転にする」と二段階に分けると、毎秒回転数が与えられた問題にも対応しやすくなります。

平均を半回転とするのは、ヘッドがトラックへ到着した時点で、目的のデータの先頭がどの角度にあるかが一様だと考えるからです。ほとんど待たずに読める場合も、ほぼ1回転待つ場合もあり、その平均を取ります。毎回必ず半回転待つ、という意味ではありません。

スクロールできます
回転数1回転の時間平均回転待ち時間
5,000rpm60,000÷5,000=12ms6ms
6,000rpm60,000÷6,000=10ms5ms
7,200rpm60,000÷7,200≒8.333ms約4.167ms
10,000rpm60,000÷10,000=6ms3ms

毎秒100回転と書かれている場合は、1回転が1÷100秒、平均回転待ちが0.005秒=5ミリ秒です。ここへさらに60を掛ける必要はありません。「分あたり」から「秒あたり」に直す換算なのか、すでに秒単位なのかを区別しましょう。7,200rpmのように割り切れない数は、途中で粗く丸めず最後に指定精度へ合わせます。

転送速度が分かる場合は容量で割る

転送時間の基本は、転送するデータ量÷データ転送速度です。データ量がバイト、速度がバイト/秒なら、答えの単位は秒になります。平均回転待ちがミリ秒で出ているなら、転送時間を1,000倍してミリ秒へそろえてから加えます。

たとえば8,000バイトを4,000,000バイト/秒で読むなら、8,000÷4,000,000=0.002秒=2ミリ秒です。8,000という数だけを見て8ミリ秒などと判断せず、分子と分母の単位を書いて約分すると計算の意味が確認できます。

小文字のbはビット、大文字のBはバイトで、1B=8bです。速度が32Mbit/秒、データ量が8,000Bなら、ここではM=1,000,000として速度を4,000,000B/秒へ直すか、データ量を64,000bitへ直して計算します。両方を同時に8倍・8分の1にして、換算を二重に行わないようにしてください。

この区別を詳しく復習したい場合は、基本情報のデータ転送時間とMB・Mbpsの単位換算が参考になります。本記事ではネットワークの伝送条件ではなく、転送に入る前の磁気ディスク固有の待ち時間も含めて考えます。

トラック容量やセクタ数から転送を求める

トラックの一部を読み取る割合を色で示した教材模型

転送速度が直接書かれていなくても、1トラック当たりのデータ量と回転数が分かれば計算できます。1回転で1トラック分を読める単純化したモデルなら、転送時間=1回転の時間×読み取るデータ量÷1トラックのデータ量です。必要なデータが連続しており、トラックの切替えなどを無視できる条件で使います。

同じことを速度で表すと、「1トラックのデータ量×毎秒回転数」が1秒当たりの転送量です。回転数Rがrpmなら毎秒回転数はR÷60なので、転送速度=トラック容量×R÷60となります。容量の単位がバイトなら、速度の単位はバイト/秒です。

セクタ数で与えられる場合は、1トラックのセクタ数×1セクタのデータ量でトラック容量を求めます。読み取るセクタ数が分かっているなら、1回転時間×読み取るセクタ数÷1トラックのセクタ数でも同じ答えになります。分子と分母の両方に同じセクタ容量が入るため、約分できるわけです。

ここで使うデータ量は、問題文が定めた記録・転送の単位に合わせます。たとえば1,000Bのデータを512Bセクタ単位で読み、端数セクタも丸ごと転送すると明示されていれば、2セクタ=1,024Bで計算します。一方、データ長そのものと実効転送速度が与えられた設問で、根拠なく端数を切り上げてはいけません。

トラック容量から転送時間を求める例は、明治大学の記憶装置の講義資料でも扱われています。実際のHDDの細かな記録方式を再現する計算ではなく、与えられた条件に沿って時間の内訳を組み立てる学習モデルとして捉えましょう。

平均値と単位の読み違いを防ぐ

半径方向へ移動するアームと円盤を拡大した構造イメージ

平均シーク時間が8ミリ秒と与えられていれば、その8ミリ秒を使います。「平均」という言葉があるから、さらに2で割るわけではありません。半分にするのは、1回転の時間から平均回転待ち時間を求める場面です。最大シーク時間しかない場合に、そこから平均シーク時間を自動的に半分とする根拠もありません。

平均回転待ち時間が4ミリ秒と直接与えられている場合も同様です。すでに平均値なので、その4ミリ秒を加えます。回転数も書かれていたら、二重に回転待ちを足さず、何を求めるための数値なのかを見分けます。すべての数字を必ず使うとは限りません。

容量のkやMを1,000倍・1,000,000倍とするか、1,024倍などとするかは問題文の指定を優先します。同じ接頭辞どうしの比なら換算係数が打ち消し合うこともありますが、BとkBを混ぜる場合は係数が必要です。本記事の例題では、曖昧にならないよう原則としてバイト数をそのまま示します。

オーバヘッドを無視するとあれば、コントローラの処理時間などを勝手に上乗せしません。逆に、追加処理に毎回1ミリ秒かかると明示されていれば、対象となる回数分を加えます。求める範囲、単位、追加条件を先に短く書き出すと、式を選ぶ前の迷いが減ります。

基本情報のディスクアクセス時間を例題で解く

アーム・円盤・基板を分けて置いた磁気ディスクの教材展示

例題は時間の内訳を書いてから足す

ここからの数値は、仕組みを確認するための独自の例題です。特定製品の実測値や性能保証ではありません。まず「シーク」「回転待ち」「転送」の三つの欄を作り、それぞれの値をミリ秒へそろえてから合計してください。

平均シーク時間が7ms、回転数が6,000rpm、転送速度が4,000,000B/秒の磁気ディスクから、8,000Bを読むとします。データは1回の連続転送で読み出せ、コントローラなどの追加時間は無視できるものとします。求めるのは読み取り完了までの平均時間です。

  • シーク:問題文から7ms
  • 回転待ち:60,000÷6,000÷2=5ms
  • 転送:8,000÷4,000,000×1,000=2ms
  • 合計:7+5+2=14ms

転送だけなら2msですが、読み始めるまでの待ち時間が12msあるため、答えは14msになります。平均シーク時間を半分にした場合は10.5ms、回転待ちを1回転分とした場合は19msとなります。答えがずれたときに、どの項目を取り違えたかまで確認しましょう。

トラック容量から転送時間を計算する

次は平均シーク時間9ms、回転数5,000rpm、1トラックのデータ量24,000Bとします。同一トラックに連続して置かれた6,000Bを読み、トラック切替えとオーバヘッドは無視します。速度が直接与えられていなくても、1回転で読める容量から計算できます。

1回転の時間は60,000÷5,000=12ms、平均回転待ち時間は12÷2=6msです。読み取る量は6,000÷24,000=1/4トラックなので、転送時間は12×1/4=3ms。平均アクセス時間は9+6+3=18msとなります。

速度から検算すると、毎秒回転数は5,000÷60回で、24,000×5,000÷60=2,000,000B/秒です。6,000÷2,000,000=0.003秒=3msとなり、同じ転送時間が得られます。別の式で同じ値になることを確認すると、回転数の換算を間違えていないかも点検できます。

セクタ数と容量を使う場合

同じ大きさの区画に分けられたセクタの教材模型

回転数7,500rpm、平均シーク時間6ms、1トラック80セクタ、1セクタ512Bとします。同じトラック上の連続した8セクタを、1回の読み出しで転送する条件です。今回は1セクタの容量まで使う方法と、セクタ数の比だけを使う方法を比べてみます。

1回転は60,000÷7,500=8msなので、平均回転待ちは4msです。トラック容量は80×512=40,960B、読み取り量は8×512=4,096B。転送時間は8×4,096÷40,960=0.8msです。したがって、合計は6+4+0.8=10.8msとなります。

セクタ数で計算すれば8×8÷80=0.8msです。この式の最初の8はミリ秒、次の8は読むセクタ数、80はトラック内のセクタ数です。同じ数字が並んでも意味は異なるので、慣れるまでは「8ms×8セクタ÷80セクタ」と単位付きで書くと安心です。

セクタ容量512Bを使わずに解けたのは、分子も分母も同じ大きさのセクタだからです。セクタ容量が不要な問題もありますが、データ量が3,072Bのように与えられた場合は3,072÷512=6セクタへ直せます。使わなかった数値があるだけで、計算が誤りとは限りません。

連続読みと独立アクセスを区別する

離れた記録領域と連続した記録領域を比較する二つの模型

複数ブロックの問題では、転送する合計データ量だけでなく、位置決めと回転待ちが何回起きるかが重要です。条件をそろえて、平均シーク時間8ms、回転数6,000rpm、1ブロックの転送時間0.5msとします。読む量は4ブロックです。

4ブロックをそれぞれ無関係な位置から独立に読み、その都度同じ平均シーク時間と平均回転待ち時間が必要なら、1回は8+5+0.5=13.5msです。4回分は13.5×4=54ms。独立したアクセスという条件では、待ち時間も4回分計上します。

一方、4ブロックが同じトラック上に隙間なく並び、最初の位置決めと回転待ちのあと連続して読めるなら、8+5+0.5×4=15msです。途中のトラック切替えやブロック間の空きがないという前提なので、シークと平均回転待ちは最初の1回だけになります。

スクロールできます
読み出し条件計算4ブロックの合計
独立した4回のアクセス4×(8+5+0.5)54ms
同一トラック上で連続読み8+5+4×0.515ms
同一トラックだが間隔は不明回転位置や間隔の条件が必要この情報だけでは決められない

「同じトラック」とあるだけで、回転待ちを常に1回と決めるのは早計です。二つ目のブロックが離れた位置にあるなら、そこまで回転する時間が必要になることがあります。また、各要求がランダムな時点で出される設定なら、同じトラックでも各回の回転待ちを考えます。問題文の連続性と要求の出し方を確認してください。

条件が明示されている場合、n個の独立アクセスならn×(シーク+回転待ち+1個の転送)、一度の位置決めから連続して読めるならシーク+回転待ち+n個分の転送と整理できます。式の見た目を覚えるより、待つ動作が再び必要になる場面を想像する方が応用しやすくなります。

HDDの実機性能やSSDとの違い

ここまでの式は、設問で指定された磁気ディスクのモデルです。実機ではキャッシュの命中、要求の並び、制御処理などの影響もあります。「計算で14msになったから、手元のHDDは必ず14msで読める」とは判断できません。平均値は、すべてのアクセスがその時間で終わることも保証しません。

特に、円盤からデータを読む内部の転送と、インターフェースを通じてホスト側へ送る転送は区別します。SeagateのHDD製品マニュアルでも、内部データレート、持続転送速度、インターフェースの最大瞬間転送速度は別項目で示されています。接続規格の最大速度を、そのまま円盤の読み取り速度へ代入しないでください。

内部転送と外部転送が両方書かれた設問では、どこまでを求めるのか、転送が順番に行われるのか重なるのか、指定されたモデルを読みます。二つの速度を見ただけで、必ず両方の時間を足したり、小さい速度だけを選んだりするのは適切ではありません。

SSDは半導体メモリを使うため、HDDのようなヘッドの機械的なシークと円盤の回転待ちはありません。この構造の違いはSeagateのSSD解説でも確認できます。ただしSSDのアクセス時間がゼロという意味ではなく、HDD用の半回転の式を適用しないということです。

複数のディスクを組み合わせるRAIDの容量・冗長性は、別の論点です。装置の構成を整理したい場合は、基本情報のRAID0・1・5・10の違いへ進むと、単体ディスクの読み出し時間と混同せずに学べます。

自己診断の計算問題で確かめる

三つの部品模型を順に確認する学習場面のイメージ

次の三問は、答えを見る前に三つの時間を書き出してみてください。いずれも追加の制御時間は無視します。計算が違ったときは、最後の足し算だけでなく、回転数の単位と転送する量へ戻って確認します。

  • 問題A:平均シーク時間5ms、回転数10,000rpm、転送速度2,000,000B/秒。2,000Bの読み取りが完了する平均時間は何msか
  • 問題B:平均シーク時間11ms、回転数6,000rpm、1トラック50,000B。同一トラックに連続した10,000Bを読む平均時間は何msか
  • 問題C:平均シーク時間7ms、平均回転待ち時間4ms、1ブロックの転送時間1ms。同じ平均条件の独立アクセスを3回行う合計と、一度の待ちのあと3ブロックを連続転送する合計はそれぞれ何msか

問題Aの答えは9msです。1回転は60,000÷10,000=6ms、平均回転待ちは3ms。転送は2,000÷2,000,000×1,000=1msなので、5+3+1=9msです。12msになった場合は、回転待ちを1回転分の6msとしていないかを確かめましょう。

問題Bの答えは18msです。1回転10msのうち、転送は10,000÷50,000=1/5なので2msです。回転待ちは5msとなり、11+5+2=18ms。転送に使う1回転時間まで半分にして1msとすると、読み取る量に対する時間を短く見積もってしまいます。

問題Cは独立アクセスが36ms、連続転送が14msです。独立なら(7+4+1)×3=36ms。連続なら7+4+1×3=14msです。与えられた4msは平均回転待ち時間なので、そのまま使います。平均シーク時間7msも半分にしません。

Aで迷ったならrpmから半回転への換算、Bならトラック容量に対するデータ量の割合、Cなら待ち時間を数える回数を復習すると効率的です。答えだけを覚えず、三つの欄のうちどこで判断を誤ったかを言葉にできれば、条件が変わった例題にも対応できます。

基本情報のディスクアクセス時間のまとめ

基本情報のディスクアクセス時間は、読み取り完了までを求めるなら「平均シーク+平均回転待ち+転送」に分解します。回転数がrpmなら1回転は60,000÷回転数ms、平均回転待ちはその半分です。平均シーク時間や、すでに与えられた平均回転待ち時間はさらに半分にしません。

転送時間はデータ量÷速度で求め、トラック容量が分かる場合は1回転時間にデータ量の割合を掛けます。最後に単位をそろえ、複数アクセスなら「どの動作を何回行うか」を確認しましょう。まずは自己診断問題を、数値を見ずに計算手順から説明できるか試してみてください。

解説を読んだら、基本情報の過去問アプリで無料演習に進み、答えだけでなく選んだ理由も確かめてみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次