構造と仕組みを知ればできる 磁気ディスク装置 の計算方法|かんたん計算問題
この連載では、基本情報技術者試験で、多くの受験者が苦手意識を持っている「計算問題」に的を絞って、問題の解き方をやさしく説明します。
今回のテーマは、「磁気ディスク装置」の計算問題です。
磁気ディスク装置の記憶領域の構造と、データを読み書きする仕組みを知ることから始めましょう。それによって、様々な問題を解くための計算方法が見えてくるからです。
磁気ディスク装置の構造と仕組み
ディスクの表面には、同心円状の記憶領域があり、これを トラック と呼びます。
個々のトラックを区切った読み書きの最小単位を セクタ と呼びます。
セクタ単位では、細かすぎて効率が悪いので、一般的に複数のセクタをまとめた ブロック を単位にして、データの読み書きが行われます。
大容量の磁気ディスク装置では、 1 つの軸に複数枚のディスクが取り付けられていて、それぞれのディスクに、データを読み書きするための ヘッド があります。
同じ位置にあるトラックは、それらをつなぐと筒状に見えるので シリンダ( cylinder = 筒) と呼ばれます。
図 磁気ディスク装置の記憶領域の構造
次に、磁気ディスク装置にデータを読み書きする仕組みを説明しましょう。
ディスクは、常時回転していて、ヘッドの下をデータが通過するときに、データの読み書きが行われます。試験問題には、 データ転送速度 として、 1 秒間に読み書きできるデータのサイズが示されます。
- たとえば、データ転送速度が 10 M バイト / 秒で、データの容量が 100M バイトなら、データの転送時間は、
- 100 M バイト ÷ 10 M バイト / 秒 = 10 秒
- になります。
ただし、データの読み書きには、データの転送時間だけでなく、待ち時間も必要になります。
待ち時間には、 平均位置決め時間(平均シーク時間) と 平均回転待ち時間 があります。下図を見てください。
図 待ち時間 = 平均位置決め時間 + 平均回転待ち時間
平均位置決め時間は、ヘッドが目的のシリンダまで移動する時間です。この値は、磁気ディスク装置のメーカーが提示するものなので、試験問題には「平均位置決め時間は 5 ミリ秒である」のように示されます。
平均回転待ち時間は、目的のシリンダに移動したヘッドの真下に、読み書きするデータの先頭のセクタが回って来るまでの時間です。
この時間は、運が良ければ 0 であり、運が悪いと 1 回転分待たされます。そこで、平均して半回転分待たされると考えて、それを平均回転待ち時間とします。
試験問題の多くでは、ディスクの 1 分間あたりの回転数から平均回転待ち時間を求めるようになっています。
- たとえば、回転数が 6,000 回転 / 分なら、 1 回転するのに
- 1 分 ÷ 6,000 回転 = 60 秒 ÷ 6,000 回転
= 0.010 秒 = 10 ミリ秒 - かかります。
- 半回転するには、この 10 ミリ秒の半分の 5 ミリ秒かかるので、平均回転待ち時間は 5 ミリ秒です。
ファイルに割り当てられるセクタ数を求める問題
500 バイトのセクタ 8 個を 1 ブロックとして,ブロック単位でファイルの領域を割り当てて管理しているシステムがある。2,000 バイト及び 9,000 バイトのファイルを保存するとき,これら二つのファイルに割り当てられるセクタ数の合計は幾らか。ここで,ディレクトリなどの管理情報が占めるセクタは考慮しないものとする。
ア 22 イ 26 ウ 28 エ 32
それでは、磁気ディスク装置の計算を行う過去問題を解いてみましょう。最初は、ファイルに割り当てられるセクタ数を求める問題です。
問題に示された数字や条件をよく見てください。以下の手順で、答えを得られます。
- 500 バイトのセクタ 8 個が 1 ブロックなので、 1 ブロックのサイズは 500 バイト × 8 個 = 4,000 バイトである。
- ブロック単位でファイルの領域を割り当てているので、2,000 バイトのファイルは 1 ブロック( 4,000 バイトの領域)になり、9,000 バイトのファイルは 3 ブロック( 4,000 バイト × 3 ブロック = 12,000 バイトの領域)になる。
- ブロックの合計は、1 ブロック + 3 ブロック = 4 ブロックである。
- セクタ 8 個が 1 ブロックなので、 4 ブロックは、 8 セクタ × 4 ブロック = 32 セクタである。
以上のことから、 32 の選択肢エが正解です。
二つのファイルをブロックに割り当てたイメージを下図に示します。どちらもブロックに空き領域があります。無駄なようですが、一つのブロックに複数のファイルを割り当てられないので、仕方ありません。
図 二つのファイルをブロックに割り当てたイメージ
正解エ
ヘッドが移動するシリンダの総数を求める問題
磁気ディスク装置のヘッドが現在シリンダ番号 100 にあり,待ち行列にシリンダ番号 120, 90, 70, 80, 140, 110, 60 への入出力要求が並んでいる。次の条件のとき,ヘッドが移動するシリンダの総数は幾らか。
- [条件]
-
- 入出力要求を並べ替えて,できるだけヘッドを一方向に動かし,シリンダ番号順に処理する,シーク最適化方式である。
- 現在のヘッドの移動方向は,シリンダ番号が増加する方向にある。
- 現在のヘッドの移動方向のシリンダに入出力要求がなくなったとき,ヘッドの移動方向を変える。
- 入出力要求の処理順序を変更しても,処理結果に影響はない。
- 処理中に新たな入出力要求は発生しない。
ア 80 イ 120 ウ 160 エ 220
次は、ヘッドが移動するシリンダの総数を求める問題です。
磁気ディスク装置への入出力要求は、待ち行列(キュー)に格納され、一つずつ処理されます。磁気ディスク装置のシリンダには番号が付けられていて、ここでは、120 、90 、70 、80 、140 、110 、60 への入出力要求が並んでいます。
このままの順番で処理すると、ヘッドがあちこちに移動して効率が悪いので、問題に示された条件で効率的に処理するのです。そのときに、ヘッドが移動するシリンダの総数(全部の処理を終えるまでにシリンダ何個分の移動をするか)を求めます。
条件をよく見てください。以下の手順で、答えを得られます。
- 条件 1. に従って、入出力要求をシリンダ番号順に並べ替えると、60 、70 、80 、90 、110 、120 、140 になる。
- 現在のヘッドの位置がシリンダ番号 100 であり、条件 2. にヘッドの移動方向がシリンダ番号の増加方向とあるので、
100 → 110 → 120 → 140
と移動し、この時点でシリンダの移動数は 40 になる。 - 条件 3. に従って、ヘッドの移動方向をシリンダ番号の減少方向に変え、
140 → 90 → 80 → 70 → 60
と移動し、この時点でシリンダの移動数は、さらに 80 になる。 - これで、すべての移動が完了し、シリンダの移動総数は、
40 + 80 = 120
である。
シリンダの移動総数は 120 であり、選択肢イが正解です。
ディスクを横から見たときのヘッドの移動を下図に示します。ここでは、シリンダを構成する 1 枚のディスクと、 1 つのヘッドだけを示していますが、一般的な磁気ディスク装置では、複数枚のディスクと、複数のヘッドが使われています。
図 ディスクを横から見たときのヘッドの移動
正解イ
平均待ち時間を求める問題
回転数が 4,200 回 / 分で,平均位置決め時間が 5 ミリ秒の磁気ディスク装置がある。この磁気ディスク装置の平均待ち時間は約何ミリ秒か。ここで,平均待ち時間は,平均位置決め時間と平均回転待ち時間の合計である。
ア 7 イ 10 ウ 12 エ 14
今度は、平均待ち時間を求める問題です。
磁気ディスクの読み書きにおける待ち時間には、平均位置決め時間(シーク時間)と平均回転待ち時間があります。両者の合計が、平均待ち時間であり、以下の手順で答えを得られます。
- 平均位置決め時間は、問題文に示されていて、 5 ミリ秒である。
- 平均回転待ち時間は、ディスクが 半回転 する時間である。
- 回転数が 4,200 回 / 分なので、 1 回転の時間は、
1 分 ÷ 4200 回 = 60 秒 ÷ 4200 回
≒ 0.014 秒 = 14 ミリ秒
である。 - 14 ミリ秒の半分の 7 ミリ秒が、平均回転待ち時間である。
- 平均位置決め時間が 5 ミリ秒と平均回転待ち時間の 7 ミリ秒を足した 12 ミリ秒が、平均待ち時間である。
平均待ち時間は 12 ミリ秒であり、選択肢ウが正解です。
正解 ウ
データの読み取り時間を求める問題
表に示す仕様の磁気ディスク装置において,1,000 バイトのデータの読取りに要する平均時間は何ミリ秒か。ここで,コントローラの処理時間は平均シーク時間に含まれるものとする。
回転数 | 6000 回転 / 分 |
---|---|
平均シーク時間 | 10 ミリ秒 |
転送速度 | 10 M バイト / 秒 |
ア 15.1 イ 16.0 ウ 20.1 エ 21.0
最後は、磁気ディスク装置の仕様から、データの読み取り時間を求める問題です。
データの読み取り時間は、データの転送時間と待ち時間を足したものです。以下の手順で答えを得られます。
- データの転送時間は、データのサイズが 1,000 バイトで、転送速度が 10 M バイト / 秒なので、
1,000 バイト ÷ 10 M バイト / 秒
= 1,000 ÷ 10,000,000
= 0.00001 秒 = 0.1 ミリ秒
である。 - 平均シーク時間は、問題に示されていて、 10 ミリ秒である。
- 平均回転待ち時間は、ディスクが 半回転 する時間である。
- 回転数が 6,000 回転 / 分なので、 1 回転の時間は、
1 分 ÷ 6,000 回転 = 60 秒 ÷ 6,000 回転
= 0.010 = 10 ミリ秒
である。 - 10 ミリ秒の半分の 5 ミリ秒が、平均回転待ち時間である。
- 待ち時間は、平均シーク時間の 10 ミリ秒と平均回転待ち時間の 5 ミリ秒を足して、 15 ミリ秒である。
- データの読み取り時間は、データの転送時間の 0.1 ミリ秒と待ち時間の 15 ミリ秒を足して、 15.1 ミリ秒である。
データの読み取り時間は 15.1 ミリ秒であり、選択肢アが正解です。
正解ア
以上、「磁気ディスク装置」の計算問題の解き方を説明しましたが、十分にご理解いただけましたでしょうか。
もしも、すぐに理解できない問題があったなら、同じ問題を繰り返し練習してください。
基本情報技術者試験では、同じ問題が何度も再利用されているので、できない問題をできるようにすることが、必ず得点アップにつながるからです。
それでは、またお会いしましょう!
label 関連タグ
免除試験を受けた 74.9% の方が、 科目A免除資格を得ています。
一般常識で解ける マネジメント と ストラテジ の計算方法|かんたん計算問題
updateITエンジニアも知っておくべき 財務会計 の計算方法|かんたん計算問題
update略語でわかる MIPS の計算方法|かんたん計算問題
updateビットパターンの計算問題|かんたん計算問題
update構造と仕組みを知ればできる 磁気ディスク装置 の計算方法|かんたん計算問題
update音声サンプリングの計算方法がわかる|かんたん計算問題
update通信ネットワークの計算方法がわかる|かんたん計算問題
update工数の計算方法がわかる|かんたん計算問題
update稼働率の計算方法がわかる|かんたん計算問題
update期待値の計算方法がわかる|かんたん計算問題
update『プログラムはなぜ動くのか』(日経BP)が大ベストセラー
IT技術を楽しく・分かりやすく教える“自称ソフトウェア芸人”
大手電気メーカーでPCの製造、ソフトハウスでプログラマを経験。独立後、現在はアプリケーションの開発と販売に従事。その傍ら、書籍・雑誌の執筆、またセミナー講師として活躍。軽快な口調で、知識0ベースのITエンジニアや一般書店フェアなどの一般的なPCユーザの講習ではダントツの評価。
お客様の満足を何よりも大切にし、わかりやすい、のせるのが上手い自称ソフトウェア芸人。
主な著作物
- 「プログラムはなぜ動くのか」(日経BP)
- 「コンピュータはなぜ動くのか」(日経BP)
- 「出るとこだけ! 基本情報技術者」 (翔泳社)
- 「ベテランが丁寧に教えてくれる ハードウェアの知識と実務」(翔泳社)
- 「ifとelseの思考術」(ソフトバンククリエイティブ) など多数