2016-08-08 35 views
1

Ich hatte den Eindruck, dass der sequentielle Scan einer Datei tatsächlich eine sequenzielle Suche auf der Festplatte wäre. Ich habe jedoch kürzlich gelesen, dass die Blöcke einer Datei möglicherweise nicht zusammenhängend von einem Dateisystem auf die Festplatte geschrieben werden. Wenn Inodes als Map verwendet werden und jeder Block durch Verfolgen des Blockzeigers erhalten wird, frage ich mich, ob der tatsächliche Mechanismus, mit dem ein Dateisystem die Blöcke einer Datei aufruft, tatsächlich sequentiell ist?Würde das sequentielle Lesen einer Datei zu zufälligen Suchvorgängen führen?

Wenn die Antwort Dateisystem abhängig ist, wäre es gut, einige wichtige Dateisysteme zu nennen. Danke.

+0

Zuerst müssen Sie die Definition von "sequenziell" geben - auf der Festplatte gibt es keine Sequenz, da die Festplatte 3-dimensional ist (Platte/Track/Sektor). –

+0

@ EugeneMayevski'EldoS sequentiell == zusammenhängende Blöcke auf der Festplatte. – itisravi

+0

@itisavi Ihr Kommentar ist leider nicht anwendbar, denn "sequentiell" und "zusammenhängend" sind Synonyme, und das Problem mit ihnen wurde in meinem vorherigen Kommentar angegeben. Darüber hinaus sind zwei benachbarte Sektoren nicht zusammenhängend. Sektoren auf der Festplatte von Anfang an sind nicht fortlaufend nummeriert, so dass logischer Sektor 1 und logischer Sektor 2, selbst wenn sie sich auf derselben Spur (Zylinder) befinden, keine Nachbarn sind. –

Antwort

0

Dateisysteme versuchen Sie so viele sequentielle Blöcke wie möglich während Schreibvorgänge zuzuweisen. Aber wenn sie altern (d. H. Viel von erstellt + löscht im Laufe der Zeit), wird fragmentation unvermeidlich. Es gibt Heuristiken, um Fragmentierung zu reduzieren, wie spekulative Vorallokation, verzögerte Vorbelegung usw. Anwendungen selbst können Dinge wie Vorabzuordnung (Beispiel Fallokation) tun und ermöglichen Readahead- und Laufdefragmentierungstools abhängig von den im Dateisystem verfügbaren Funktionen, um die Blöcke zusammenhängend oder zumindest zu machen liest schneller.