Springe zum Hauptinhalt

Archiv

Wie funktioniert Linux?


Der Durchblick: Files und Prozesse

[Files und Filesysteme] [Prozesse]

Files und Filesysteme

Grundsätzliches

  • eines der grundlegenden Unix-Konzepte
  • prägt die gesamte Ein-/Ausgabeorganisation
  • integriert die Arbeit mit Geräten

Arten von Files

  • reguläre Files (Dateien)
    • Folge von Bytes, keine inhaltliche Interpretation durch das Betriebssystem
    • ein File enthält nur Zeichen, die eine Anwendung geschrieben hat
  • Verzeichnisse (Ordner, directories)
    • enthalten Verweise auf Files (link, hard link)
    • tabellenartige, feste Struktur
      • Filename | Nummer
      • Nummer: Index  des zum File gehörenden Kopfsatzes (inode)
  • Special Files
    • repräsentieren Geräte
    • üblicherweise im Verzeichnis /dev
  • Symbolische Links, Named Pipes, Unix Domain Sockets, ...
Vertiefung (Arten von Files, Filenamenbildung)

Filesysteme

  • Organisationstruktur für Files
  • hierarchische Baumstruktur
  • erstrecken sich über ein logisches Gerät (Plattenpartition, Diskette, CD-ROM, ...)
  • werden untereinander montiert und bilden so den Namensraum für Files

Namensraum

  • nur ein Namensraum für Files
  • beginnt mit / - Wurzel (root)
  • keine Laufwerksbuchstaben
  • Filenamen: max. 255 beliebige Zeichen (Groß-/Kleinbuchstaben werden unterschieden!)
  • Pfadnamen bezeichnen ein File
    • Trennzeichen: /
    • genauer: jede Zeichenkette in einem Pfadnamen, die mit / endet, bezeichnet ein Verzeichnis
    • absolute Pfadnamen: beginnen an der Wurzel des Filesystems, also mit /
    • relative Pfadnamen: gehen vom aktuellen Verzeichnis aus
    • Beispiele:  /etc/passwd
      thm/mein_file
      mein_file
  • Namen mit fester Bedeutung
  • Name Bedeutung Beispiele
    . das Verzeichnis selbst ./mein_file
    /etc/./passwd
    .. das übergeordnete Verzeichnis ../czi/mein_file
    /etc/../bin/passwd
  • Namensraum kann sich über mehrere Datenträger (Festplatten, Wechselplatten, Disketten, ...) und über mehrere Rechner (NFS - Network File System, verteilte Filesysteme - AFS, DFS, coda, ...) erstrecken
Bild: Der Filesystembaum kann sich über mehrere Platten und Rechner erstrecken
Bild: Der am Rechner 2 sichtbare Filesystembaum erstreckt sich über mehrere Platten und Rechner

Filesystemtypen

  • Linux unterstützt zahlreiche Filesystemtypen
  • Unix File Systeme (UFS):  Ext2fs , minix, ..., Ext3fs, Reiserfs, JFS (von IBM)
  • Nicht-Unix File Systeme:  VFAT (Win95/WinNT),  FAT32 (DOS),  NTFS  (WinNT- nur lesend), ...
  • Netzwerk- und verteilte Filesysteme: NFSAFScoda , ...

Fileattribute (in Unix Filesytemen)

  • Fileattribute (Metadaten) werden im Inode (Kopfsatz) des Files gespeichert:
  • Eigentümer des Files - Nutzer (UID) und Gruppe (GID)
  • Zugriffsrechte - getrennt nach Nutzer, Gruppe und Andere (lesen, scheiben, ...)
  • Zeitpunkt der letzten Änderung
  • Zeitpunkt des letzten Zugriffs
  • Zeitpunkt der letzten Änderung des inodes
  • Filegröße
  • Anzahl der Verzeichniseinträge (Links)
  • Verweise auf die Datenblöcke

Zugriffsrechte

  • Zugriffsrechte werden symbolisch bezeichnet
  • morgana% ls -l /bin/bash
    -rwxr-xr-x   1 root     sys       353944 Okt 13 01:23 /bin/bash
    morgana%
  • die Zeichenfolge -rwxr-xr-x ist der Filemodus, welcher die Zugriffsrechte enthält
    • erstes Zeichen: Filetyp
    • Kennzeichen Bedeutung
      - reguläres File
      d Verzeichnis (directory)
      l Symbolischer Link
      b block device (blockorientiertes Gerät, z.B. Festplatte)
      c character device (zeichenorientiertes Gerät, z.B. serielle Schnittstelle)
      p named pipe (Mechanismus zur Prozeßkommunikation)
      s unix domain socket (Mechanismus zur Prozeßkommunikation)
    • es folgen drei Triple, jeweils eines für die Angabe der Zugriffsrechte für den Nutzer, die Gruppe und alle anderen

    • Inhalt je Triple:
      Position Kennzeichen Bedeutung Besonderheiten
      reguläres File Verzeichnis
      1 r read (lesen) Leserecht für das File ermöglicht Auflisten des Verzeichnisinhalts 
      - Recht nicht gewährt - -
      2 w write (schreiben) File darf modifiziert werden gestattet Erzeugen, Löschen oder Umbenennen von Verzeichniseinträgen
      - Recht nicht gewährt - -
      3 x execute (ausführen) File darf ausgeführt werden (File enthält ausführbares Programm) gestattet Durchsuchen des Verzeichnisses (Zugriff auf Verzeichniseinträge, deren Name bekannt ist)
      - Recht wird nicht gewährt - -
      s set uid/gid on execution File wird mit der Identität des Eigentümers (set uid) bzw. der Gruppe (set gid) ausgeführt für neu erzeugte Files wird die Gruppe des Verzeichnisses übernommen (nur in einigen Unix-Systemen)
      t sticky (nur 3. Triple) ohne Bedeutung w-Recht gilt nur für Fileeigentümer
Vertiefung (Zugriffsrechte)

Vertiefung (Interna eines Filesystems)

Prozesse

Grundsätzliches

  • eines der grundlegenden Konzepte von Unix
  • definieren den Kontext der Programmabarbeitung
  • Abarbeitung eines Programms vollzieht sich als Prozeß
  • wichtigste Umgebung: virtueller Adreßraum

Adreßraum eines Prozesses

  • Folge virtueller Hauptspeicher-Adressen
  • typische Größe: 2 oder 3 GB (auf 32 Bit-Prozessor)
  • ist in Segmente unterteilt
  • im realen RAM befindet sich immer nur ein Ausschnitt des virtuellen Adreßraums
Bild: Aufteilung des virtuellen Adreßraums
Bild: Aufteilung des virtuellen Adreßraums (adressierbar im Prozeß: 3GB)

Erzeugen von Prozessen und Starten von Programmen

  • Prozesse werden von bereits existierenden Prozessen durch einen Systemdienst (fork()) erzeugt
    • dabei findet eine "Dopplung" des virtuellen Adreßraums statt
    • beide Prozesse arbeiten anschließend denselben Programmcode ab, wobei jeder Prozeß erkennen kann, ob er der erzeugende oder der erzeugte Prozeß ist
  • Prozesse starten ein neues Programm durch einen Systemdienst (exec())
    • dabei wird der virtuelle Adreßraum überschrieben
  • der erste Prozeß (init) ensteht während des Boot-Vorgangs

Prozeßhierarchie

  • jeder Prozeß hat einen Eltern-Prozeß
Bild: Prozeßbaum
Bild: Prozeßhierarchie in Form eines Baumes

Prozeßmanagement

  • Prozesse werden vom Unix-Kernel verwaltet
  • zu den Verwaltungsdatenstrukturen gehören
    • Prozeß-ID (PID)
    • Prozeß-ID des Eltern-Prozesses (PPID)
    • Prozeß-Eigentümer: Nutzer (UID) und Gruppe (GID)
    • bisher verbrauchte CPU-Zeit
    • aktuelle Priorität (hat Einfluß darauf, welcher Prozeß als nächstes die CPU erhält)
    • nice-Wert (fließt in die Berechnung der Priorität ein)
    • Ein-/Ausgabebeziehungen des Prozesses
  • Eigentümerangaben eines Prozesses bestimmen
    • Rechte im Filesystem
    • Berechtigung zur Kommunikation mit anderen Prozessen
Vertiefung

Ein-/Ausgabebeziehungen von Prozessen

  • jeder Prozeß verfügt standardmäßig über drei offene E/A-Kanäle (verbunden mit dem Terminal)
    • Standardeingabe (stdin)
    • Standardausgabe (stdout)
    • Standardfehlerausgabe (stderr)
  • Standard-E/A-Kanäle können umgelenkt (in ein File, zu einem anderen Prozeß auf demselben oder auf einem anderen Rechner)

Mechanismen zur Kommunikation von Prozessen

  • Pipes
    • Datenaustausch zwischen zwei Prozessen
    • Prozesse müssen miteinander verwandt sein (Elternprozeß muß Pipe organisieren)
    • typisch: Umlenken von stdout eines Prozesses in stdin eines anderen Prozesses
  • Signale
    • informieren Prozesse über asynchron aufgetretene Ereignisse
    • werden auch benutzt, um Prozesse abzubrechen (Kommando: kill)
    • jeder Nutzer kann nur Signale an eigene Prozesse schicken
    • Vertiefung
  • Sockets
    • Kommunikation zwischen Prozessen auf verschiedenen Rechnern
    • Basis für das Internet
  • Semaphoren, Message Queues, Shared Memory, Named Pipes, ...

Einige Kommandos zur Steuerung von Prozessen

  • Prozeßliste anzeigen; PID's, Laufzeit, Eigentümer, Priorität, nice-Wert, ... ermitteln: ps
  • Prozeßhierarchie anzeigen: pstree
  • Prozeßaktivitäten anzeigen: top
  • Prozesse abbrechen, anhalten, fortsetzen (Signale versenden): kill
Vertiefung (Praxis: Multiuser, Booten, shutdown)
Zur Homepage des URZ
Thomas Müller, Christoph Ziegler, 25. September 2001