Skip to content
Snippets Groups Projects
ss22.q 3.3 KiB
Newer Older
  • Learn to ignore specific revisions
  • 0 In einem UNIX-UFS-Dateisystem gibt es symbolische Namen/Verweise (Symbolic Links) und feste Links (Hard Links) auf Dateien. Welche Aussage ist richtig? (Juli 2022)
    
    + Für jede reguläre Datei existiert mindestens ein Hard-Link im selben Dateisystem.
    
      Wenn kein "Hardlink" auf eine Datei existiert, dann löscht das
      Dateisystem die Datei.  Daher muss auf jede existierende Datei
      mindestens ein Verweis existieren.
    
    - Wird der letzte Symbolic Link auf eine Datei gelöscht, so wird auch die Datei selbst gelöscht.
    
      Symbolic Links sind nur verweise auf Dateipfade, wobei die Datei
      hinter dem Dateipfad nichts von diesem Verweis wissen muss.  Es ist
      ja auch möglich auf eine nicht-existierende Datei zu verweisen.
    
    - Ein Symbolic Link kann nicht auf Dateien anderer Dateisysteme verweisen.
    
      Nein, weil Symbolic Links nur Pfade sind, welche das Betriebsystem
      transparent auflöst, wenn man versucht auf die Datei zuzugreifen,
      aber diese nichts über das tatsächliche System wissen.  Bei
      Hard-Links ist das hingengen nicht der fall, weil diese die gleiche
      Inode-Nummer teilen müssen, was von Datei-System abhängig ist.
    
    - Ein Hard Link kann nur auf Verzeichnisse verweisen, nicht jedoch auf Dateien.
    
      Hard-Links können auf beides verweisen, nur ist es mit dem `link`
      (bzw. dem `ln` Befehl) Systemaufruf dem Benutzer nicht erlaubt
      selbst Verweise auf Verzeichnisse zu erstellen.  Damit wird
      sichergestellt, dass der Datei-Baum, der durch Hard-Link aufgespannt
      wird, nicht zu einem graphen degeneriert, was Probleme bereiten
      würde für Werkzeuge wie `find`.
    
    .
    
    0 Ausnahmesituationen bei einer Programmausführung werden in die beiden Kategorien Trap und Interrupt unterteilt. Welche der folgenden Aussagen ist zutreffend? (Juli 2022)
    - Ein Trap signalisiert einen schwerwiegenden Fehler und führt deshalb immer zur Beendigung des unterbrochenen Programms.
    
      Nein, ein Trap kann auch durch eine nicht eingelagerte Seite (wo
      dann mit der MMU versucht wird diese einzulagern, und dann das
      Programm weiter läuft) oder durch einen Systemaufruf ausgelöst
      werden.
    
    - Ein durch einen Interrupt unterbrochenes Programm darf je nach der Interruptursache entweder abgebrochen oder fortgesetzt werden.
    
      Nein, weil ein Interrupt nichts mit dem Programm zu tun hat, und
      daher dieses nicht (direkt) abbrechen sollte.
    
    + Obwohl Traps immer synchron auftreten, kann es im Rahmen ihrer Behandlung zu Wettlaufsituationen mit dem unterbrochenen Programm kommen.
    
      Ja.  Dazu muss man sich an die definition vom Programm erinnern:
    
      > Festlegung einer Folge von Anweisungen für einen Prozessor, nach der die zur Bearbeitung einer (durch einen Algorithmus wohldefinierten) Handlungsvorschrift erforderlichen Aktionen stattfinden sollen
    
      darunter kann auch das "Hauptprogramm" vom Betriebsystem verstanden
      werden, welches von einem Trap-Handler unterbrochen wird.  Sollten
      beide (möglicherweise auf verschiedenen Kernen) versuchen
      synchronisierte Operationen auszuführen, können diese sich
      gleichzeitig verklemmen.
    
    - Ein Systemaufruf im Anwendungsprogramm ist der Kategorie Interrupt zuzuordnen.
    
      Nein, ein Systemaufruf ist ein Trap, weil diese deterministisch bei
      der Ausführung auftreten, bspw. wenn je nach Rechenarchitektur ein
      [`syscall`](https://www.felixcloutier.com/x86/syscall) (x86_64)
      Befehl ausgeführt wird.
    
    .