www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Verständnisfrage zu Dateisystemen


Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Ich versuche im Moment, die Funktionsweise eines Dateisystems zu 
verstehen (FAT vorerst, ich möchte mich später aber noch ext2 widmen). 
Das ganze soll in einem Mikrocontrollerboard zum Einsatz kommen, wo eine 
Festplatte dran ist. HD ansteuern und Sektoren auslesen / schreiben etc. 
ist kein Problem (eine alte IDE-Platte mit 40M fungiert als 
Versuchsobjekt ;)).
Prinzipiell verstehe ich die Funktionsweise der FAT (jedenfalls in 
groben Zügen). Was ich allerdings nicht verstehe, ist folgendes:
Die FAT kann (und muss) sich ja über mehrere Sektoren der HD erstrecken. 
Von ned HD kann man aber immer nur einen Sektor aufs mal lesen. Ich 
frage mich jetzt, wie da auf niedrigster Ebene das ganze verwaltet wird 
- was, wenn ich einen ganz bestimmten Eintrag in der FAT suche? 
Idealerweise ist dann die eine Hälfte von dem im ersten, die andere 
Hälfte im 2. Sektor der Platte.
Dann muss man ja schlussendlich immer Sektor für Sektor die ganze FAT 
rauslesen, wenn man Daten braucht, richtig? Oder kopiert man die FAT 
einmal ins RAM, bearbeitet sie dort, und wenn man das System 
"runterfährt" wird die FAT zurückgeschrieben?
Was, wenn man eine grosse Datei, die sich über mehrere Sektoren 
erstreckt, die nicht zusammenhängen, öffnet und daran Änderungen macht 
und das wieder speichert? Kopiert man die Datei ins RAM, bearbeitet sie 
dort und schreibt sie zurück? (Das wäre hässlich; da braucht man ja 
unmengen von RAM um einigermassen vernünftige Datenmengen verwalten zu 
können).

Nun - Fragen über Fragen; es wäre genial wenn mir da einer Weiterhelfen 
könnte.

Übrigens wollte ich erst nur ext2 verwenden, fand aber keine so richtig 
dolle Documentation; im Linux-Kernel (2.6) stehen auch nicht so wirklich 
Kommentare drin. Weiss jemand von euch ne Seite, wo das ganze 
Dokumentiert ist? Für FAT gibts ja solche Dokus wie Sand am Meer.

Grüüse
     Tobias

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tobias Plüss wrote:
> Übrigens wollte ich erst nur ext2 verwenden, fand aber keine so richtig
> dolle Documentation; im Linux-Kernel (2.6) stehen auch nicht so wirklich
> Kommentare drin. Weiss jemand von euch ne Seite, wo das ganze
> Dokumentiert ist? Für FAT gibts ja solche Dokus wie Sand am Meer.

http://e2fsprogs.sourceforge.net/ext2.html

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Simon:
Danke!
Obschon: Die Seite kenne ich sehr wohl; ist aber etwas dürftig.
Hier (http://www.pjrc.com/tech/8051/ide/fat32.html; für FAT) ist genau 
beschrieben, welches Byte wozu gut ist. Auf e2fsprogs.sourceforge.net 
hingegen ist zwar die Funktionsweise schon drin, aber ich weiss 
immernoch nicht, welches Byte z.B. im Superblock wozu dient oder wo der 
Datenträgername reingeschrieben wird.

Autor: Wiesi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich finde da z.B.

http://www.nongnu.org/ext2-doc/ext2.html
http://ivs.cs.uni-magdeburg.de/bs/lehre/wise0001/b...
http://ext2read.sourceforge.net/documentation/insi...
http://uranus.it.swin.edu.au/~jn/explore2fs/es2fs.htm
http://www.linux-security.**/ebooks/ulk3-html/0596...

(** durch Carla und Nordpol als Buchstaben ersetzen, sonst meckert den 
Spamfilter)

Da sollte schon einiges drin sein (PS: <10min Goole).


Im Kernel Source würde ich als erstes in den Header files schauen und 
nach den structs ausschau halten.
In include/linux/ext2_fs.h sind z.B. so ziemlich alle variablen des 
Superblocks kommentiert...

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ah danke.
in linux/include/fs.h hab ich noch garnicht geschaut... nur in fs/ext2.
Nun wie auch immer, das ist schon etwas besser.

> durch Carla und Nordpol als Buchstaben ersetzen, sonst meckert den
> Spamfilter

carla? Nordpol? Ich versteh' nur Bahnhof ;)

Aber wie man die Probleme löst, die ich ganz anfangs beschrieben habe, 
wisst ihr auch nicht, oder?

Autor: Wiesi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn man buchstabiert, dann verwendet man meistens irgendwelche Namen 
für die Buchstaben, wobei der 1. Buchstabe des Wortes der ist, den man 
meint. A=Anton, B=Berta, usw. usf.

In diesem Fall eben "Charlie" "November" im Nato Alphabet. Vorher ist 
mir nichts besseres eingefallen.

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach sooo :D
Warum kann man .cn hier nicht ausschreiben? :o

Autor: Wiesi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Keine Ahnung. Auf alle Fälle erscheint, wenn .**/ im obigen Post 
vorkommt unten eine rote Warnmeldung, dass anscheinend Spam enthalten 
ist und der Post wird nicht abgeschickt.

Autor: Oilaf (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Tobias,
leider kann ich Dir nicht so richtig helfen, aber ein bischen vieleicht. 
Ich habe das mit der FAT mal im Zusammenhang mit CompactFlash gemacht. 
Damit die Sache nicht so kompliziert wird, habe ich nur aus dem 
Hauptverzeichnis Dateien gelesen. Dabei habe ich viele Informationen aus 
einem dicken Buch PC Intern 2.0 ziehen können, oder war das vor Deiner 
Zeit? Im Anhang noch meine Aufzeichnungen von damals, die sicher nicht 
ganz vollständig sind, aber möglicherweise helfen sie ein wenig.

Gruß Olaf

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Olaf,
ja ich glaube PC Intern war etwas vor meiner Zeit ;) Ich kenne es 
jedenfalls nicht. Aber danke für das Dokument!

Autor: Bernd Rüter (Firma: Promaxx.net) (bigwumpus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
All diese Fragen stellten sich auch der PC-Gemeinde.

Da entstand schon unter MS-DOS ein kleines Caching der Sektoren oder gar 
Dateien.

In einem uC ist eigentlich kaum Speicherplatz, so speichert man immer 
nur einen Sektor im RAM und führt daran Änderungen durch, die man dann 
auf die Platte schreibt, wenn man einen anderen Sektor braucht.
Ist evtl. etwas langsam, und ja, man muß sich an der FAT entlanghangeln, 
um eine Datei zu lesen. Hast Du mehr Speicher, kannst Du ja einen Sektor 
(512 Bytes) Buffer für die Datei, für die FAT und für das 
Inhaltsverzeichnis anlegen und verwalten, dann wird es schon schneller.

Aber: WOZU ?

Autor: 1234 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein richtiges PC kompatibles filesystem sollte man nur in Betracht 
ziehen, wenn der Datentraeger auch mit einem PC austauschbar sein soll. 
Falls nicht kann man das Ganze vereinfachen. Man kann zB das Directory 
auf einen Sektor begrenzen, Unterdirectories weglassen und dergl.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.