(1)
1ブロックの長さ
= レコード長×ブロック化因数+IBG
= 250 x 6 + 150
= 1,650 バイト
1トラックのブロック数
= 1トラックの長さ÷1ブロックの長さ
= 19,000÷1,650=11.52
= 11ブロック(端数切り捨て)
1トラックのレコード数
= ブロック数×ブロック化因数
= 11 x 6
= 66レコード
1シリンダに記録できるレコード数
=1トラックのレコード数×1シリンダのトラック数
= 66 x 19
= 1254レコード
必要なシリンダ数
= レコード件数÷1シリンダのレコード数
= 50,000÷1254 = 39.87
= 40シリンダ
(2)
平均回転待ち時間=1回転時間÷2
=(時間(1分)÷ディスク回転速度)÷2
=1min(60,000ms)÷6,000rpm÷2
=5ms
1トラックあたりのデータ転送時間
=時間(1分)÷ディスク回転速度
=10ms
1ブロックの長さ
= レコード長×ブロック化因数+IBG
= 250 x 6 + 150
= 1,650 バイト
1トラックのブロック数
= 1トラックの長さ÷1ブロックの長さ
= 20,000÷1,650
= 12ブロック(端数切り捨て)
1ブロックあたりの転送速度
=1トラックの転送速度÷1トラックのブロック数
=10ms÷12
=0.83ms
※細かく計算しないで、複数の式をまとめると
※きっちり割り切れて 0.825 になります。
※小数点以下何桁まで有効か、によりけりですが。
1ブロックアクセス時間
=平均位置決め時間+平均回転待ち時間+1ブロック転送時間
= 20ms + 5ms + 0.83ms
= 25.83ms
--------
以上が私の計算結果です。
わかりやすく式を列挙して計算しましたが、普通に計算する場合は、#1さんのやり方でかまわないです。(最終的にはその方向で計算できれば良いかと)
(2)の方は、#3で指摘されているように、5ms足りません。
それと、#2で指摘されているように、図にすると理解しやすくなります。
ただ、(1)の↓この部分でケアレスミスしているかと。
>50000件格納するのに必要なトラック数 = 50000 ÷ 11 = 4545.4545・・・なので4546トラック
これは、ブロック数で割るのではなく、レコード数が50,000件なので1トラックあたりのレコード数で割るのが正しいのではないかと思うのですが。
50000÷66=757.5757575....=758トラック
で、以下、
758÷19 = 39.89 = 40シリンダ
と。
私の方が間違いでしょうか?自信なし。
久しぶりなので、計算式等思い出せないものもあり(というかブロック化因数が思い出せなかった)、本+ネットを頼ったものもあって、自身がないのですが。(^_^;
ここら辺の計算は、習うより慣れろ、なので、基本をベースに数をこなして覚えた方が良いでしょう。
#明日は有給のため夜更かし・・・
お礼
とっても丁寧な回答、本当にありがとうございました。 とても分かりやすくて助かりました。 本やネットで調べていただいたみたいで。。。 感謝感謝です。 基本がまったくできていないので、 数こなしてがんばりたいと思います。 素敵なお休みをすごしてくださいねぇ♪