その昔、OS-9というOS(Mac OS9ではないし、OS/9とも書かない)のファイルシステムは、1つのファイルが48以上に断片化(フラグメント)できない構造だった。
これは、
■OS-9はディスクメディアの標準セクタサイズとして256バイト/セクタを採用していた
■ファイルの情報を保持する構造体「ファイルディスクリプタ」が、1つのセクタをまるまる使う「ファイルディスクリプタセクタ」として定義されていた
■256バイトのファイルディスクリプタセクタ中、240バイトが、ファイルが使用しているセクタのリストである「セグメントリスト」に使われていた
■セグメントリストの1要素は、3バイトのセクタアドレスと、2バイトのセクタ数、計5バイトからなる
■セグメントリストは拡張できなかったので、240 ÷ 5 = 48セグメントまでにしか断片化ができなかった。
という理由(設計)によるもの。
ログファイルなんかのような、日々追記していくファイルは、結構すぐこのリミットに達してしまい、追記できなくなってしまった記憶があります。(そういうときは、だれもデフラグメントツールなど用意していなかった時代なので、そのファイルをいったん新規ファイルにコピーして、リフレッシュしたファイルを使うようにするのです)
フリーソフトを作る人たちの間では徐々にこの問題への認識が広がっていき、大きくなることが予想されるファイルはあらかじめセグメントを大きく確保する(予想サイズにまでいったんシークする)対策が一般化していきました。
コメント
懐かしい制限ですね。
フロッピーディスク運用ならまだしも、
ハードディスクに移行した時点でこの制限や、
論理セクタ=256バイトはきつかったと思います。
なかなか、先を見越した設計って、難しいもんですね。
といって、当時のマシンには荷が重すぎる仕様にしちゃっても困りますしねえ。。