10.07.2015 Aufrufe

Technische Informatik II

Technische Informatik II

Technische Informatik II

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

<strong>Technische</strong> <strong>Informatik</strong> <strong>II</strong>Übung 4Beispiellösung1. Konzeptea) Dateitypen1) Der Dateityp wird am Anfang der Datei mit einer „magicnumber“ festgehalten (Bsp: Unix binaries)2) Der Dateityp kann in den Metainformationen zur Datei gespeichert werdenb) Zugriffsrechtei. Jaii. Neiniii. Neiniv. zum Beispiel: chmod o+r musterloesung3.docv. r: lesen der Dateiliste erlaubt, w: ändern der Dateiliste erlaubt, x:Durchsuchen der Dateiliste erlaubtc) Dateioperationen1) Create File: Prüfen der Zugriffsrechte, Verzeichniseintrag erstellen unddavon referenzierte Inode vorbereiten2) Open File: Prüfen der Zugriffsrechte, Puffer einrichten, Open File TableEintrag erstellen (falls noch keiner vorhanden!)3) Close File: Verbleibende Daten im Puffer rausschreiben und Bufferdeallozieren, Open File Table Eintrag löschen (falls nicht mehr referenziert)4) Delete File: Prüfen der Zugriffsrechte, Verzeichniseintrag5) Read/Write/Append File: Puffer schreiben/lesen (DMA!)6) Seek File: Index auf spezifizierte Position setzen→ random access7) Get/Set Attributes (u.a. Rename File)2. Hierarchische Strukturena) VerzeichnisEin Verzeichnis ist ein Mittel zur Gruppierung von Objekten. Ein Verzeichniserlaubt z.B. die Bildung von Hierarchien und erlaub eine Zuweisung vonNamen an Objekte, die nur durch Objektnamen im gleichen Verzeichniseingeschränkt ist (Strukturierung des Namensraums).<strong>Technische</strong> <strong>Informatik</strong> <strong>II</strong>, Musterlösung 4 6. Mai 2010 Seite 1/3


) Absolute und relative Pfadeabsolut: /home/prof1/ti2/muloe3.docrelativ: ../prof1/ti2/muloe3.docAbsolute Pfade: Von Vorteil, wenn die aktuelle Position im Verzeichnisbaumnicht bekannt ist.Relative Pfade: Von Vorteil, wenn ganze Verzeichnisstrukturen verschobenwerden sollen ohne die Pfade in Programmen zu ändern.c) Linksti1/uebung3.doc3. Dateisystemea) 200 Dateien oder 199 Dateien und 1 Verzeichnis.b) 10*512 + 2*256*512 = 267264 B = 261 KB.c) B t = B Inode + B IndirektionsTabelle + B NutzdatenRound = 512B + 512B + 12*512B =7168B = 7 KBd) Keine. Es wird nur im Verzeichnis ein neuer Eintrag erstellt.4. Virtuelles DateisystemMehr Hintergrundinfos zu den Fragen aus dieser Aufgabe finden Sie z.B. auf:http://pvs.informatik.uni-heidelberg.de/Teaching/DASY-07/mueller.pdfa) MountenAus man mount:mount attaches a file system to the file system hierarchy at the mount_point,which is the pathname of a directory. If mount_point has any contents prior tothe mount operation, these are hidden until the file system is unmounted.b) Mehrere Dateisystems im Verzeichnisbaum des VFSi. Die Inode Nummern, welche jeweils für ein einzelnes Dateisystemeindeutig sind, verlieren ihre Eindeutigkeit.ii. Das VFS definiert eine neue ID (PRAXIS: Sogenannte Dentries. Nur fürFiles, die bereits angefordert/verwendet wurden > CACHE)iii. Die Einschränkung, dass Hardlinks nur für Dateien innerhalb des gleichenDateisystems verwendet werden können. Dies, da HardlinksVerzeichniseinträge sind, welche direkt auf die Inode Nummer der zuverlinkenden Datei verweisen (im Gegensatz zu symbolischen Links).c) Datei-Lookup im VFSi. Die Grundlegenden Schritte sind:do {1 1. Berechtigungen von aktueller Pfadkomponente prüfen2 2. Nächste Pfadkomponente berechnen3. Holen des zugehörigen Dentry Objektes(=“Inode“ des VFS): do_lookup()5 4. auf Mountpunkt prüfen: follow_mount()6 5. zur Behandlung von Symlinks: do_follow_link()} while (weitere Pfadkomponenten vorhanden);(Zugriff mittels Dentry Objekt für die Datei)<strong>Technische</strong> <strong>Informatik</strong> <strong>II</strong>, Musterlösung 4 6. Mai 2010 Seite 2/3


ii. Lösung im Linux Kernel (Linux-2.6.17/fs/namei.c)* This limits recursive symlink follows to 8, while* limiting consecutive symlinks to 40.** Without that kind of total limit, nasty chains of consecutive* symlinks can cause almost arbitrarily long lookups.*/static inline int do_follow_link(struct path *path, struct nameidata *nd){int err = -ELOOP;if (current->link_count >= MAX_NESTED_LINKS)goto loop;if (current->total_link_count >= 40)goto loop;…loop:dput_path(path, nd);path_release(nd);return err;}5. Journalinga) Eintrag im Directory löschen, Datenblöcke in die Liste der freien Blöckeaufnehmen, Inode löschen.b) Absturz nach dem löschen aus dem Verzeichnis -> Datenblöcke und Inodesind als „Leichen“ noch vorhanden, können aber nicht mehr referenziertwerden.c) Siehe http://de.wikipedia.org/wiki/Journaling<strong>Technische</strong> <strong>Informatik</strong> <strong>II</strong>, Musterlösung 4 6. Mai 2010 Seite 3/3

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!