電子書籍の厳選無料作品が豊富!

下の2問の解き方を教えていただけませんか??
いろいろ調べてみたのですが、さっぱりわからずに困っています。。。よろしくお願いします。


(1) 次の仕様の磁気ディスクにおいて、必要とされるシリンダ数を求めよ。
ここでブロック間隔(IBG: Inter Block Gap)はブロックとブロックの間に存在し、ブロックの情報を記録する領域である。
またブロック化因数とは一つのブロックを構成するレコードの数である。

1シリンダ当たりのトラック数 19 トラック
1トラック当たりのバイト数 19,000 バイト
1レコードのバイト数 250 バイト
ブロック間隔 150 バイト
レコード件数 50,000 件
ブロック化因数 6

(2) 次の仕様の磁気ディスクの1ブロックアクセス時間を求めよ。ここでrpm(revolution per second)は一分当たりの回転数である。

平均位置決め時間 20 ミリ秒
1トラック当たりのバイト数 20,000 バイト
ディスク回転速度 6,000 rpm
1レコードのバイト数 250 バイト
ブロック間隔 150 バイト
ブロック化因数 6

A 回答 (6件)

(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シリンダ
と。
私の方が間違いでしょうか?自信なし。

久しぶりなので、計算式等思い出せないものもあり(というかブロック化因数が思い出せなかった)、本+ネットを頼ったものもあって、自身がないのですが。(^_^;

ここら辺の計算は、習うより慣れろ、なので、基本をベースに数をこなして覚えた方が良いでしょう。

#明日は有給のため夜更かし・・・
    • good
    • 0
この回答へのお礼

とっても丁寧な回答、本当にありがとうございました。
とても分かりやすくて助かりました。
本やネットで調べていただいたみたいで。。。
感謝感謝です。
基本がまったくできていないので、
数こなしてがんばりたいと思います。

素敵なお休みをすごしてくださいねぇ♪

お礼日時:2004/05/26 12:45

#1です。



しまった、やっぱりケアレスミスしてました。(^^;

(1)
50000件格納するのに必要なトラック数 = 50000 ÷ 11 ÷ 6 = 757.57・・・なので758トラック
50000件格納するのに必要なシリンダ数 = 758 ÷ 19 = 39.894・・・なので40シリンダ

(2)
平均回転待ち時間を足し忘れました。
平均回転待ち時間 = ディスク1回転の所要時間 ÷ 2 = 5ミリ秒

1ブロックアクセス時間 = 20ミリ秒 + 0.825ミリ秒 + 5ミリ秒 = 25.825ミリ秒

です。

フォローして下さった皆様、ありがとうございました。
    • good
    • 0
この回答へのお礼

わざわざ訂正までしていただき
本当にありがとうございました!!

お礼日時:2004/05/26 12:46

No.1さんとNo.3さんをあわせてあわせ技で正解です。

    • good
    • 0
この回答へのお礼

回答ありがとうございます!
基礎がまだまだなのでがんばります。

お礼日時:2004/05/26 12:51

(2)はあと平均回転待ち時間を足す必要があるかも。



1回転の時間の半分です。5ミリ秒。
    • good
    • 0
この回答へのお礼

補足までしていただいて!
とっても助かりました!!!

お礼日時:2004/05/26 12:41

数字だけを追うとわけがわからなくなってくるので


図を書いて考えるとわかりやすいですよ。
    • good
    • 0
この回答へのお礼

回答ありがとうございます!!
図ですかぁ。
確かにテキストを見るとそれらしい図が書いてありました。
なかなか自分で考えるのは難しいですねぇ。
ありがとうございました。

お礼日時:2004/05/26 12:39

基本情報処理の典型的な問題ですね。


その手の資格本を見れば解き方は載ってる筈です。

(1)
1ブロックのバイト数=250byte×6+150byte=1650byte
1トラック当たりの格納可能ブロック数=19000byte ÷ 1650byte = 11.5151・・・なので11ブロック
50000件格納するのに必要なトラック数 = 50000 ÷ 11 = 4545.4545・・・なので4546トラック
50000件格納するのに必要なシリンダ数 = 4646 ÷ 19 = 244.5・・・なので245シリンダ

(2)
1ブロックのバイト数=250byte×6+150byte=1650byte
ディスク1秒間の回転数=6000 ÷ 60 = 100回転
ディスク1回転の所要時間 = 1秒 ÷ 100 = 10ミリ秒
1ブロックリードする所要時間 = 1650 ÷ 20000 × 10 = 0.825ミリ秒
1ブロックアクセス時間 = 20ミリ秒 + 0.825ミリ秒 = 20.825ミリ秒

です。

(いや~久しぶりにこういう計算やりました。20年ぶり。間違ってたら恥ずかしいな。(^^;)
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
とっても助かりましたぁ。
情報処理の典型的な問題なんですね!!
勉強不足です。。。
本当にありがとうございました。

お礼日時:2004/05/26 12:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!