私は現在、Javaでファイルシステムを作成する課題を持っています。私はそれをFATのように実装しようとしています。私の心配は、私が効率的に各FCBを保管したり、読んでいないことです。各ファイルのように、私が現在持っているFCBを、持っている:私はFCBを読みたいときにファイル制御ブロックを効率的に保存する
___________________
| |
| size of file name |
|___________________|
| |
| file name |
|___________________|
| |
| # of data pointers|
|___________________|
| data pointer #1 |
|-------------------|
| bytes to read |
|-------------------|
| data pointer #2 |
|-------------------|
| bytes to read |
|-------------------|
| ... |
|-------------------|
| data pointer n |
|-------------------|
| bytes to read |
|___________________|
、私は次のようにします。最後に
1. Get the first four bytes
2. Convert to int -> bytes in file name
3. Read that many bytes for file name
4. Read next four bytes
5. Convert to int -> number of pointers
6. Read 4 * number of pointers
6a. Read address from pointer #1
6b. Read number of bytes, starting from address
、私のファイルシステムは
として保存されます___________________
| number of pointers|
|-------------------|
| FCB#1 |
|-------------------|
| ... |
|-------------------|
| FCB N |
|-------------------|
| Data |
| |
| |
|___________________|
FCBを保存するときにオーバーヘッドが高すぎることが懸念されます。 FATのために、私はそれをやるべきですか、それとも私はそれを完全に誤解していますか?
「保管のオーバーヘッド」とは、具体的にはどういう意味ですか? FCBを維持するために必要なメモリは?それをディスクに書き込むコスト?それを解析するコスト(バイトを変換する[] - > intなど)?もう1つのこと - 6aと6bで読み込んだデータは何ですか - それはFCBデータか実際のファイルデータですか? –