Langzeitspeicher: File Was ist ein File ? Eine Kollektion von Informationen mit einem Namen, die im Sekundärspeicher gespeichert ist. Kapitel VII Ø Speichere große Datenmengen. File-Systeme Ø Gespeicherte Information muss Prozesse überleben, die die Ø Mehrere Prozesse müssen gleichzeitig Zugriff auf die Daten VO Betriebssysteme haben. 1 File-Eigenschaften VO Betriebssysteme 2 Daten verwenden. File-Attribute (1) u Daten gehen nicht verloren (durch Stromabschaltung oder Neustarten des Systems). u Name u Typ: schreiben oder lesen VO Betriebssysteme 4 um File-Eigenschaften zu beschreiben File-Attribute 3 u Meta-Daten F welche Information ist im File gespeichert? Wo findet man das File auf der Platte? u Größe: Anzahl der Bytes u Zugriffsrechte: Können unterschiedlich für Lesen, Schreiben, Ausführen, Anhängen usw. sein u Zeit: Zugriff, Veränderung, Erzeugen u Version: Wie oft hat sich das File geändert? u Ort: VO Betriebssysteme u Erzeugen, VO Betriebssysteme 5 VO Betriebssysteme 6 File Typen – Name + Extension File-Attribute (2) File-Struktur File-Typen (1) 8 VO Betriebssysteme 3 Arten von Files u unstrukturierte Sequenz von Bytes F Betriebssystem kennt den Inhalt nicht (Unix und Windows) u Record-Sequenz u Baum VO Betriebssysteme 7 bezeichnet die Art des Files u reguläre Dateien: Ascii- und Binärdateien u Verzeichnisse: beschreibt Struktur eines Dateisystems u spezielle Zeichendateien modellieren F serielle E/A-Geräte (Terminal, Drucker, Netzwerke, etc.) File-Zugriff File-Typen (2) Sequentieller File-Zugriff 10 VO Betriebssysteme Direkter Zugriff ( Random Access) u Bytes/Records können in beliebiger Reihenfolge gelesen werden. u essentiell für Datenbanken u Leseoperation F bewege File Pointer ( Seek) und dann Lesen, oder F Lesen und dann Bewegen des File Pointers File Operationen (1) u u VO Betriebssysteme 11 u create F Zuordnung eines Namens F Zugriffsrechte festlegen open F Überprüfe Zugriffsrechte F Überprüfe ob File existiert F Sperren des Files (nur ein Prozess soll ein File schreiben können) write F Welches File (Name oder Pointer) wird geschrieben ? F Welche Daten werden geschrieben ? F Wohin werden Daten geschrieben ? • Implizit (File Pointer) • Explizit (direkter Zugriff) 12 Files sind abstrakte Datentypen mit einem Interface und einer Implementierung. VO Betriebssysteme (a) exekutierbares File (b) Archiv-File VO Betriebssysteme 9 Sequentieller Zugriff u Speicherbandmodell u Lese all Bytes/Records hintereinander u keine beliebiges Eintragen von Daten u Einfügen von Daten immer am Ende der Datei u File Pointer zeigt auf das nächste freie Element u VO Betriebssysteme 13 u truncate F Lösche Daten im File beginnend von der derzeitigen File- Pointer Position bis zum Ende. close F unlock File ( open kann eine File sperren) F modifiziere Metadaten (Zeitstempel für close) F Freigeben von Systemressourcen (File Deskriptoren, Buffer, ...) Lesen von Metadaten F File-Größe, Zeit, Besitzer usw. Aktualisieren von Metadaten F ändere File-Größe, Zeit, Besitzer usw. 16 Ein Beispiel mit File-Systemroutinen (2) Ein Beispiel mit File-Systemroutinen (1) VO Betriebssysteme u u VO Betriebssysteme u u 15 u read F Welches File wird gelesen ? F Welche Daten werden gelesen ? • Implizit (File Pointer) • Explizit (direkter Zugriff) F Wie viele Daten werden gelesen ? fsync F Synchronisiere alle vorhergehenden writes durch Schreiben vom Haupt- in den Plattenspeicher. F Garantiere, dass alle vorhergehenden writes auf ein File in den Plattenspeicher geschrieben werden. seek F Bewege den impliziten File-Pointer auf neuen Offset im File. delete F lösche File. VO Betriebssysteme u File Operationen (3) 14 File Operationen (2) Dateiabbildung in den Speicher Einfache File-Verzeichnisse (Directories) u u a) Segmentierter Prozess vor der Abbildung von Dateien in seinen Adressraum. b) Prozess nach Abbildung einer existierenden Datei abc in ein Segment. Erzeugung eines Segments für die Datei xyz hollings users 18 one x to y a b Ermöglichen Benutzern das Teilen von Unterverzeichnissen und Files system hollings mail user1 gdb Azyklische Graphenverzeichnisse File Erzeuge einen Baum mit Files. Jedes Verzeichnis kann Einträge in Form von Files oder Verzeichnissen enthalten. Jeder Prozess hat ein aktuelles Verzeichnis. F Angabe von Namen relativ zu diesem Verzeichnis F Ändern von Verzeichnissen nach Bedarf Prozesse können Files oder Verzeichnisse nicht teilen. system vi cc vi gdb users mail user1 one user2 to x y z user2 cc vi gdb one to x y z a b 20 u user3 a b VO Betriebssysteme u user2 19 u user1 17 cc Baumverzeichnisse u thomasf VO Betriebssysteme Jede Datei kann in eigenes Segment abgebildet werden. ü Byte k in der Datei entspricht Byte k im Segment system VO Betriebssysteme Ø funktioniert am besten für Systeme mit Speichersegmentierung Ø map: bildet Datei auf virtuelle Startadresse ab Ø unmap: entfernt Datei aus Adressraum – Datei existiert aber weiterhin VO Betriebssysteme Ø 1 Verzeichnis F Alle Files auf derselben Ebene zu verwalten ist unschön. F Suchen und Sortieren von Files ist aufwendig. F Alle Benutzer müssten die Vergabe von File-Namen koordinieren. F Jedes File muss einen eindeutigen Namen haben. File-Verzeichnis mit 2 Ebenen F oberste Ebene für Benutzer F 2. Ebene für Benutzerfiles Beispiele für File-Typen u MacIntosh F Hat File-Typ, der Teil der File-Metadaten ist. F Mit jedem File-Typ ist eine Anwendung assoziiert. VO Betriebssysteme Sollte Betriebssystem weitere File-Typen kennen ? F Z.B. Spreadsheet File versus Textverarbeitungs-File F Vorteile: • BS kennt die auszuführende Anwendung. • Automatisches make bei Änderung des Programms F Nachteile: • Betriebssystemänderung für jeden weiteren File-Typ • Schnittstelle zwischen BS und Anwendungen wird komplexer. • Was passiert bei Files mit mehreren Typen (z.B. komprimiertes Postscript-File) ? l Teilen von Files in Mehrbenutzersystemen ist sinnvoll. l Teilen von Files erfordert Schutzmechanismus. Windows95/NT F Hat File-Typ im File-Suffix. F Tabelle pro Benutzer für das Assoziieren von File-Suffixen mit Anwendungen. l VO Betriebssysteme Unix F Kann letzten Teil eines Files als Suffix verwenden. F Anwendungen können entscheiden, ob diese Information verwendet wird. 23 l u u File-Schutzmechanismus (1) l u Muss den Typ von einigen Files kennen F Verzeichnisse F ausführbare Programme Verteilte Systeme ermöglichen das Teilen von Files über das Netzwerk. Network File System (NFS) ist eine bekanntes verteiltes FileSystem. Benutzer sollte die Kontrolle über seine Files haben: u Was kann man mit einem File machen? u Von wem? 25 Unix unterstützt azyklische Graphenverzeichnisse - MS-DOS nicht! u VO Betriebssysteme u Löschen von Files oder Verzeichnissen (implementierungsabhängig) F Wenn ein Benutzer ein gemeinsames File löscht, so sollte es für alle Benutzer gelöscht sein. F Benutzer löscht Eintrag auf gemeinsames File • File sollte nicht gelöscht werden. • Wenn der letzte Benutzer seinen Eintrag löscht, sollte File gelöscht sein. • Verwalte Zähler für Anzahl der Referenzen auf ein File. 21 u Das selbe File kann mehrere Namen haben. F Absolute Pfadnamen sind verschieden, aber das File ist identisch. F Ähnlich dem Aliasing Problem bei Programmvariablen VO Betriebssysteme u 22 Kennt das Betriebssystem den Inhalt von Files ? Azyklische Graphenverzeichnisse u Jedes File hat 3 Klassifikationen F Besitzer: besitzt das File F Gruppe: Menge von anderen Benutzern (ohne Besitzer) F Welt: alle anderen Benutzer u Jedes File hat 3 Zugriffsmodi: F read, write, execute u Schutzmechanismus für Verzeichnisse F read: Auflisten von Files in einem Unterverzeichnis F write: Löschen und Erzeugen von einem File F execute: kann die File-Attribute in einem Unterverzeichnis lesen F sticky bit: kann nur Einträge von Verzeichnissen ändern, die man selbst besitzt. u Verschiedene Kontrollarten: Zugriffslisten • Für jeden Benutzer gibt es zu jedem File eine Liste mit Zugriffsrechten. F Gruppen • Benutzer werden zu Gruppen zusammengefasst. • Files werden Gruppen zugeordnet. • Jeder Benutzer einer Gruppe hat dieselben Rechte. • Abhängig vom System: Files/Benutzer können mehreren Gruppen zugeordnet sein. F Pro File ein Passwort VO Betriebssysteme 26 F Unix-File-Schutzmechanismus 27 Unix-File-Schutzmechanismus VO Betriebssysteme File-Schutzmechanismus (2) Zugriffslisten und Gruppen Zugriffsmodi: read, write, execute Files haben 12 Bits für Schutzmechanismus F 3 Klassen von Benutzern 9 bits • read: Auflisten der Files in einem Unterverzeichnis • write: Löschen oder Erzeugen von Files • execute: kann die File-Attribute von Files in Unterverzeichnis sehen. a) owner access (Besitzer) 7 ⇒ b) group access (Gruppe) 6 ⇒ c) public access (Welt) 1 ⇒ RWX 111 RWX 110 RWX 001 Superuser kann Gruppen mit eindeutigem Namen erzeugen. Benutzer können zur Gruppe hinzugefü gt werden. setuid: Exekutiere das Programm mit der UID (Benutzeridentifikation), die zum Besitzer des Files gehört. F getuid: Exekutiere das Programm mit der Gruppen-ID, die zum Besitzer des Files gehört. owner group chmod 761 Füge File einer Gruppe hinzu. chgrp G public game game 29 F Mit chmod werden die Zugriffsrechte gesetzt. VO Betriebssysteme sticky bit: Exekutierbares Programm bleibt im Speicher nach der Ausführung 28 F VO Betriebssysteme u Unix-File-Schutzmechanismus - ein Beispiel foo ist ein File: Benutzer otto hat r, aber nicht w auf diesem File foo u UNIX F Schreiboperationen sind sofort sichtbar. F Es gibt Modus, der gemeinsame File-Pointer ermöglicht. u AFS (Andrew File System – CMU) F open/close Semantik • Kopiere File bei open • Zurückschreiben bei close u Unveränderbare Files F Sobald File als unveränderbar deklariert wird: • File-Name nicht wiederverwendbar • Inhalt unveränderbar otto kann foo trotzdem schreiben! stuff (1) Kopiere foo in neues File mit Namen t e m p stuff temp foo foo foo (3) Ändere Namen von temp auf foo VO Betriebssysteme 30 (2) Lösche foo Zusammenfassung l Ein File besteht aus einer Sequenz von logischen Records (Byte, Zeile, komplexer Datentyp). Abbildung von logischen Files auf Platte oder Magnetbänder erfolgt durch das BS. l File-Verwaltung: Verzeichnisse l Schutzmechanismus verhindert unerlaubten Zugriff auf Files. 32 l Ein File ist ein abstrakter Datentyp, der vom BS definiert und implementiert ist. VO Betriebssysteme l 31 File-Änderungen aus der Sicht von mehreren Prozessen: VO Betriebssysteme stuff Stuff ist ein Verzeichnis: Benutzer o t t o hat r/w/x auf dir File-Konsistenz