ハードディスクの深層:データアクセス時間と算出例【備忘録-基本情報技術者試験対策 #30-3】

基本情報技術者試験

※ 本記事では、基本情報技術者試験の対策として私が勉強したことを備忘録的にまとめておきたいと思います。
少しでも参考になれば嬉しいです。

はじめに

さて今回は、基本情報技術者試験対策として、ハードディスクのアクセス時間についてまとめたいと思います。

ちなみにですが、

Part1はハードディスクの役割と基本構造について、

Part2はハードディスクの記憶容量の計算についてまとめました。

ハードディスクについて軽くまとめようと思っただけなのに気づいたら3部構成の意外と超大作になってしまった・・・

とまぁ余談はこれくらいにして・・・

2つともとても大切な知識なのでテスト前には必ず頭に入れておくようにしてください。

もちろんアクセス時間の計算問題も出題されます。アクセス時間の原理について理解を深め、実際に計算できるよう練習しておきましょう!

それではさっそくスタートです。

ちなみに私はこの参考書を使って勉強してました。

漫画形式で読みやすく、分かりやすい内容になっているため、無理なく学習を進められると思います。

過去問を解きまくり、不明点があれば参考書で知識を補う、このサイクルで試験対策するのが私のオススメです!

最新版はこちらです。

少し内容が異なる部分もあるかもしれませんが、大まかには変わらないはずですので、安心して下さい。

ハードディスクのシーク、サーチ、データ転送について

ハードディスクの「データアクセス時間」について理解するためには、「シーク(位置決め)」、「サーチ(回転待ち)」、「データ転送」という3つのプロセスをしっかりと理解してあげることが重要です。基本的には、データを読み込む際も、データを書き込む際も、この3つは必要になってきますので、これを機会にしっかり頭に入れておきましょう。

シーク(位置決め)とは

シーク(位置決め)は、アクセスアームが磁気ヘッドをプラッタ上の特定のトラックに移動させるプロセスを指します。

ちょっと分かりにくいですかね??

単純に、磁気ヘッドを特定のトラックの上に持ってくるまでのプロセスです。

すなわち、シーク(位置決め)に必要な時間は、ヘッドが現在位置から目的地まで移動するのに必要な時間です。シーク時間は、ハードディスクの機械的な性質(磁気ヘッドの移動速度やプラッタのサイズ)によって決まります。

アクセスアームと磁気ヘッドが分からない方は、ハードディスクの役割と基本構造の記事に詳しく書いていますので、そちらをチェックです!

トラックが分からない方は、ハードディスクの記憶容量の記事をチェックですね!

サーチ(回転待ち)とは

次はサーチ(回転待ち)ですね。

シーク(位置決め)によって、データが存在する特定のトラックにたどり着くことはできました。ただ、もちろんそれだけではデータにアクセスはできません。データにアクセスするためには、磁気ヘッドがデータのあるセクタ(厳密ではないですがいったんこのイメージで・・・)までたどり着かないといけません。

そうなったらもう分かりますよね??

そう、プラッタを回転させて、磁気ヘッドが特定のセクタに到達するまで待機しないといけません。このプロセスこがサーチ(回転待ち)であり、それに要する時間が、サーチ(回転待ち)時間です。

そんなに難しくないですよね??

シークで特定のトラックを決めて、サーチで特定のセクタを決めるイメージです。(左右を決めた後に、上下を決めるようなイメージでしょうか・・・伝わります??・・・)

データ転送とは

さてさて、ここまでくればもう簡単です。あとは単純にデータを転送するだけです。

磁気ヘッドが目的地(データがあるセクタ)までたどり着いたら、いよいよデータの読み書きがスタートします。これが単純にデータ転送です。データをやり取りしているだけですね。

このときにかかる時間が、データ転送時間ですね。

ちなみにデータ転送時間は、ハードディスクの電子的な性質(インターフェースの速度やデータの密度)によって決まります。

  • インターフェースの速度:
    ハードディスクとコンピュータの間の通信速度です。インターフェースの速度が速いほど、データ転送時間は短くなります。
  • データの密度:
    プラッタ上の単位面積あたりのデータ量です。データの密度が高いほど、同じ量のデータを転送するのに必要な時間は短くなります。

さて、データアクセスまでのプロセスや、それにかかる時間まではイメージできましたね。

ではいよいよ、実際に時間を算出してみましょう。

練習問題スタートです!

データアクセス時間の算出例

さて、データアクセス時間を算出するためは、3つのステップにかかる時間が重要であると先述しました。

  1. シーク(位置決め)時間
  2. サーチ(回転待ち)時間
  3. データ転送時間

データアクセス時間とは、もちろんのこと、以下のように計算できます。

データアクセス時間 = シーク時間 + サーチ時間 + データ転送時間

何の違和感もありませんね??ただ単純に、必要な時間を足し合わせただけです。

ちなみに余談ですが、「待ち時間」というのも存在はするみたいです。

待ち時間 = シーク時間 + サーチ時間

まぁ待ち時間の計算なんて見たことないので大丈夫だとは思いますが、余裕のある方は覚えておきましょう!

さて、では例題を見ながら時間を算出してみましょう!

Question

ハードディスクの条件が以下のとき、このハードディスクから10000 バイトのデータを読み出す場合にかかるデータアクセス時間を求めよ。

回転速度6000 回転/分
平均シーク時間10 ミリ秒
1トラックあたりの記憶容量20000 バイト

「ミリ」は「1/1000」を表しています。基本情報を受ける方でこのあたり丸暗記されている方はいないと思いますが、万が一のためです。

単位の中で、「ミリ」や「キロ」など目にするかと思いますが、基本的には「1000」の割合で掛け合わされます。単位が小さくなればなるほど、「1/1000」倍されていきますし、単位が大きくなればなるほど「1000」倍されていきます。(「センチ」だけ「1/100」ですがね。)

だから、1 mm(ミリメートル) = 1/1000 m(メートル)なわけです。(1 cm = 10 mm。1 m = 100 cm = 1000 mmのほうが感覚的に伝わりますか??)

ちなみに余談ですが、私は学生のころ、「アト」オーダーまで触れていましたので、小さい方は感覚的に分かります。(「アト」は「10^-18」です・・・)
大きい方は「テラ」くらいまでは分かりますね・・・「10^12」です。

まず大切なこととして、データアクセス時間を算出する際、シーク時間とサーチ時間は必ず平均値を使うようにします

今回、平均シーク時間はすでに与えられていますので、まずは平均サーチ時間を求めましょう。

サーチ(回転待ち)時間とは、プラッタを回転させて、磁気ヘッドが特定のセクタに到達するまでの時間でしたね。文字通り、回転を待っている時間です。

平均値を求めるために、極端な例を考えてみましょう。「最速」と「最遅」を考えればOKです。

まず「最速」パターンですが、これはシークが終わった瞬間、サーチも終わるパターンです。要するに、サーチが終わったら、たまたま目的のセクタの真上に磁気ヘッドがあり、プラッタが少しも動くことなく、ドンピシャでデータまでたどり着けたパターンです。お、たまたま真上だ、ラッキーって感じです。このときプラッタは、0 回転(ちょっとも動かない)です。

次に「最遅」パターンですが、これはプラッタが1 回転(1 周)してようやく目的のセクタの真上に磁気ヘッドがたどり着けたパターンです。プラッタが1 回転(1 周)してもデータが見つからないなんてありえませんよね??シークの時点でデータがあるトラックは判明しているわけですから、1 回転(1 周)している間に絶対に目的のデータへとたどり着けます。たまたま一番最後まで回りきらないと、データが見つからないパターンが最遅です。

さて、この時点で気が付きましたかね??

「最速」パターン = プラッタ0 回転

「最遅」パターン = プラッタ1 回転

なのであれば、「平均」パターンは、プラッタ1/2 回転です。これも単純ですね??

平均 = (最速 + 最遅) / 2 = 1/2 回転

そう、なので平均サーチ時間を求めるためには、プラッタが1/2 回転するまでにかかる時間を算出してあげればよいわけです。問題の条件から算出してみましょう。回転速度が6000 回転/分、すなわち、1 分間に6000 回転しますので・・・

1 秒 = 1000 ミリ秒
1 分 = 60 秒 = 60000 ミリ秒

今回の条件では
60000 ミリ秒で6000 回転なので・・・

1 回転にかかる時間 = 60000 / 6000 = 10 ミリ秒

1/2 回転にかかる時間は1 回転にかかる時間の半分なので・・・

1/2 回転にかかる時間 = 10 / 2 = 5 ミリ秒 

とまぁこんな感じで、今回の条件では、1/2 回転にかかる時間、すなわち、平均サーチ時間 = 5 ミリ秒だと求められました。

めちゃくちゃ丁寧に書きますが、1 回転にかかる時間の求め方にピンと来ていない方は、”比率”を使うか、”次元”で考えるようにしましょう。基本情報受ける方でそんな人はいないと思っていますが念のためです。

★”比率”を使うパターン

6000 回転するのに60000 ミリ秒、では1 回転するのに何 ミリ秒??となった際、

6000 回転 : 60000 ミリ秒 = 1 回転 : ?? ミリ秒

のように”比率”で表せますね??”比率”の計算は、ご存じの通り、内と内、外と外を掛け合わせて計算をしていきます。

6000 * ?? = 60000 * 1
?? = 60000 * 1 / 6000 = 10

したがって、1 回転は10 ミリ秒と分かるわけです。”比率”の計算方法(内と内、外と外)にピンと来ていない方は、「比率 計算方法」でググりましょう・・・

★”次元”で考えるパターン

私はこっちですね。理系出身だとこっちの考え方のほうが染みついてますよね??

“次元”とは、簡単に言えば”単位”のことです。「メートル」や「秒」のことです。ここに着目します。

求めたいのは、1 回転に何 ミリ秒かかるかなので
?? ミリ秒/回転

今回の条件では
6000 回転するのに60000 ミリ秒かかるので
次元に着目して、
求めたいものに合わせるように計算すると

?? ミリ秒/回転 = 60000 ミリ秒 / 6000 回転 = 10 ミリ秒/回転

となるわけです

こっちのほうが簡単ですよね??とゆうか次元の考え方は大切なので覚えておきましょう・・・

さてさて、余談が長すぎましたが、これで平均シーク時間と平均サーチ時間が求められました。

あとはデータ転送時間だけです。

条件より、1トラックあたりの記憶容量が20000 バイトです。また、プラッタが1 回転するのにかかる時間が、平均サーチ時間の計算から、10 ミリ秒だと分かりました。

これらの条件を使うことで、1 ミリ秒あたりに転送できるデータ容量が分かります。

1トラックが20000 バイト
1 回転が10 ミリ秒
なので、
10 ミリ秒で20000 バイトのデータを転送できる
したがって、

20000 バイト / 10 ミリ秒 = 2000 バイト/ミリ秒

とまぁこんな感じで、1 ミリ秒で2000 バイトのデータを転送できることが分かりました。

あとは今回の問題に合わせるだけです。問題では、「ハードディスクから10000 バイトのデータを読み出す」と書いてあります。したがって以下のように計算ができるわけです。

データ転送時間 = 10000 / 2000 = 5 ミリ秒
※比率か次元で考えてくださいね。

はい、これでデータ転送時間 = 5 ミリ秒だと分かりました。

注意してほしいのは、データへのアクセスとデータの転送は全く別ということです。言葉の意味合い的には一緒に思えてしまうかもしれませんが、データへのアクセスには、先述の通りデータの転送だけでなく、シークやサーチのステップも含んでいますので、注意しましょう!

あとは全部の時間を合計するだけです。

平均シーク時間 = 10 ミリ秒
平均サーチ時間 = 5 ミリ秒
データ転送時間 = 5 ミリ秒

データアクセス時間 = 10 + 5 + 5 = 20 ミリ秒

こんな感じで、データアクセス時間が20 ミリ秒だと分かるわけです。

いかがでしたでしょうか??計算問題は何度も繰り返し練習して必ずできるようになっておいてくださいね。

最後に

さて今回は、基本情報技術者試験対策として、ハードディスクのデータアクセス時間についてまとめました。

データアクセス時間の計算も、記憶容量の計算と同様によく問われますので、できるようにしておきましょう。

基本的には、それぞれの構成や動作原理が理解できていれば、そこから計算のやり方も理解できるはずです。まずは仕組みをきっちりと理解しておいてください。

★シーク(位置決め)
磁気ヘッドを特定のトラックの上に持ってくるまでのプロセス

★サーチ(回転待ち)
プラッタを回転させて、磁気ヘッドが特定のセクタに到達するまで待機するプロセス

★データ転送
磁気ヘッドが目的地までたどり着いたら、データの読み書きがスタート

★データアクセス時間計算時の注意点
データアクセス時間 = シーク時間 + サーチ時間 + データ転送時間
シーク時間とサーチ時間は平均値を用いること(平均値はプラッタ1/2回転分)

前回まとめた記事も読んでもらえると嬉しいです!

基本情報以外の勉強記事も是非!

オススメ参考書 & Udemy講座

オススメ参考書

私が勉強する際に使用していたオススメ参考書は以下です。

上記シリーズの最新版は以下です。(内容はそこまで変わらないはずですが・・・)

Udemy講座

私がぜひオススメしたい、Udemyの講座もいくつかピックアップしておきます。

誰かに解説してもらった方が分かりやすい場合もありますからね~

画像でもボタンでも、どちらを押下しても講座へ飛べるようにしてありますので是非!

コメント

タイトルとURLをコピーしました