「お昼の放送」の思い出

ブロック化因数(ブロッキングファクター)とセクタ、レコードについて。

下記の参考書内の問題で分からないことがありました。以下引用:
------------------------------------
問題
1トラックが12セクタ、1セクタが1200バイトのディスク装置の場合、
論理レコードが900バイトの固定長であるフィルを格納するとき、
ディスクの使用効率が最大となるブロック化因数は1、2、3、4のうちどれか。
ただし、ブロックは複数のセクタにまたがれるが、トラックにはまたがれない。
また、セクタに複数のブロックを記録できない。

解答
ブロック化因数で場合分け。
1のとき。1セクタに1レコード記録でき、トラックに12レコード記録できる。
2のとき。2セクタに1ブロック(2レコード)。1トラックに12レコード。
3のとき。3セクタに1ブロック(3レコード)。1トラックに12レコード。
4のとき。3セクタに1ブロック(4レコード)。1トラックに16レコード。
よって、4のとき効率が一番いい。
-------------------------------------
引用終わり。

1のときは分かりますが、2,3のときの前半がなぜそうなるのか分かりません。
また、4のとき、突然規則が変化してますがなぜでしょうか。
以上、2点の疑問について質問させていただきます。

参考書:2010 基本情報技術者 合格への総まとめ、iTEC

A 回答 (2件)

セクタ単位かつブロック単位で物理的に読み書きしますから、


ブロックがセクタの途中から始まることはできないということもポイントです。
ですから、ブロック化因数によって無駄が発生するということです。
それを踏まえて、逆に考えてみればわかりやすいのではないでしょうか?
1セクタ(1200バイト)にレコード(900バイト)を1個入れると残り300バイトの無駄。
2セクタ(2400バイト)にレコード(900バイト)を2個入れると残り600バイトの無駄。
3セクタ(3600バイト)にレコード(900バイト)を3個入れると残り900バイトの無駄。
3セクタ(3600バイト)にレコード(900バイト)を4個入れると割り切れるので無駄は無い。

無駄が少ないほど使用効率が良いとなるわけですから、4が答えとなります。
    • good
    • 1

また随分とクラシックな問題ですね。


物理的な入出力は最小単位がセクタになります。
1セクタ1200バイトなら、900バイトだけ読む
ことはできません。
物理的な入出力に対し、論理的な入出力単位が
ブロックです。ブロック化因数が2なら1個の
ブロック長は900×2で1800で、これを収める
には1セクタでは足りず、2セクタ必要ですね。
つまり、1ブロックあたり2セクタになるので、
1トラック(12セクタ)では6ブロック入る計算
です。1ブロックは2レコードなので、6×2で
12レコードです。次に、ブロック化因数が3なら
1ブロックは900×3で2700になり、これを収める
ためには2セクタでは足りず、3セクタ必要に
なります。1トラックでは4ブロックということ
です。1ブロックは3レコードなので4×3で、
これも12レコードになります。
    • good
    • 0

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