* On Tue, 10 Dec 2002 at 21:02 +0100, Bernd Brodesser wrote:
* Adalbert Michelic schrieb am 10.Dez.2002:
* On Tue, 10 Dec 2002 at 18:09 +0100, Achim Luft wrote:
Bernd Brodesser schrieb:
Du schreibst, wo der erste Speicherpunkt auf der Festplatte liegt. Der nächste Speicherpunkt steht am Ende des ersten Blocks. Ist das
Nein, steht er nicht. Die FAT ist (wie schon der Name sagt) eine Tabelle, die am Anfang der Platte steht, in der je Block die Nummer des Folgeblocks vermerkt ist, oder alternativ ein reservierter Wert, der angibt, daß der File mit diesem Block endet oder der Block defekt/resreviert/$whatever ist.
Aufgrund der Brisanz der enthaltenen Daten wurde FAT meist in zweifacher Ausfertigung abgelegt. Auf die FAT(s) folgte dann das root-Verzeichnis, und dann die eigentlichen Datenblöcke.
richtig? Wenn dem so ist, dann ist FAT maximal daneben. Das hieße, wenn man irgendwo auf eine große Datei zugreifen will, dann muß man sich immer wieder durchhangeln?
Durchhangeln, ja. Aber wie sollte man sonst unbekannte Mengen von Daten speichern, ohne sich wo durchhangeln zu müssen? ext2 ist in dem Punkt sicher nicht viel besser - um genauer zu sein, um ein Stück aufwendiger.
Moment, moment. Wenn ich mit dem Systemaufruf lseek den Zeiger einer Datei auf eine beliebige, aber feste Position verlege, dann wird zuerst nachgerechnet, im wievielten Block sich die Position befindet. Dann wird in der I-Node nachgesehen, wo sich dieser Block befindet. Dafür sind dann evtl. (bei dreifach indirekte Blöcke) noch drei Zugriffe auf indirekt-Blöcke notwendig. Dann hat man aber den Block und dann wird der Block im Hauptspeicher gelesen und auf der entsprechenden Position gesetzt. So bei ext-Dateisysteme.
Wenn ich das mit FAT richtig verstanden habe, muß zuerst der erste Block gelesen werden, dann der zweite usw. bis zum, sagen wir mal fünftausendsechshundertdreiundzwanzigsten. Wenn dem so ist, finde ich das nicht optimal.
Nein, es muss nicht jeder Block einzeln gelesen werden. Diese Daten werden in der FAT nachgeschlagen. Das sind zwar möglicherweise mehr Zugriffe als bei ext2, jedoch muß nicht jeder Block einzeln gelesen werden. Eine Speicherung der Daten wie z.B. bei ext2 hätte für den Einsatzzweck, für den das ursprünglich entwickelt worden ist, weit zuviel Platz gefressen, bzw. wäre zu aufwendig gewesen. Der Mehraufwand, der durch die Abarbeitung einer verketteten Liste im Gegensatz zum Konzept wie bei ext2 entsteht, ist jedenfalls angesichts der Zeit, die zum Lesen eines Blocks von der Platte gebraucht wird, vernachlässigbar. Auch auf einem extrem langsamen System. -- Adalbert GPG welcome, request public key: mailto:adalbert+key@lopez.at