Übung 4 Flashcards
Welche Aussagen zu kritischen Abschnitten sind wahr?
- Um alle Konfliktstellen zu identifizieren und zu schützen betrachtet man den gesamten Kern als kritischen Abschnitt.
- Kritische Abschnitte sind ohne aufkommende Verzahnungen ungefährlich.
- Eine Unterbrechungssperre verhindert in jeden Fall die verzahnte Ausführung von Kernoperationen.
- Ein kritischer Abschnitt bezeichnet den gegenseitigen Ausschluss (mutual exclusion) während einer Kernoperation.
- Um alle Konfliktstellen zu identifizieren und zu schützen betrachtet man den gesamten Kern als kritischen Abschnitt.
- Kritische Abschnitte sind ohne aufkommende Verzahlungen ungefährlich.
Welche Aussagen sind in Bezug auf Kernausschlüssen korrekt?
- Die Realisierung eines Kernauschlusses ist von der Anzahl der Prozessoren und der Möglichkeit von Unterbrechungen abhängig.
- Kernausschlüsse sind aufgrund ihrer Komplexität nur mit Hardware realisierbar.
- In Mehrprozessorsystemen mit Unterbrechungen wären Kernausschlüsse durch eine unteilbare Operation, die sowohl die Kernsperre als auch die Unterbrechungssperre setzt, umsetzbar.
- Bei einem Mehrprozessorsystem ohne Unterbrechungen reicht eine simple Interruptsperre, um den Kernausschluss zu realisieren.
- Die Realisierung eines Kernausschlusses ist von der Anzahl der Prozessoren und der Möglichkeit von Unterbrechungen abhängig.
- In Mehrprozessorsystemen mit Unterbrechungen wären Kernausschlüsse durch eine unteilbare Operation, die sowohl die Kernsperre als auch die Unterbrechungssperre setzt, umsetzbar.
Welche Aussage über Kernel-Level Threads sind korrekt?
- Thread Operationen wie Threadererzeugung ist für Kernel-Level Threads i.d.R. teuer.
- Für verschiedene Kernel-Level Threads kann ein anderer Thread-Scheduler eingesetzt werden.
- Bei einem Seitenfehler wird der ganze Prozess suspendiert.
Thread Operationen wie Threaderzeugung ist für Kernel-Level Threads i.d.R. teuer.
Welche Aussagen über User-Level Threads sind richtig?
- Jeder User-Level Thread benötigt einen Prozess.
- Kooperatives-Multithreading ist mit User-Level Threads leicht umsetzbar.
- Bei einem Seitenfehler wird der ganze Prozess suspendiert.
- User-Level Threads können Betriebssystem-Ressourcen schonen.
- Bei einem Seitenfehler wird der ganze Prozess suspendiert.
- User-Level Threads können Betriebssystem-Ressourcen schonen.
Welche Aussagen über Thread-Pool sind wahr?
- Threads im Thread-Pool können wiederverwendet werden.
- Durch eine hohe Anzahl von blockierten Threads kann das Starten von Aufgaben verhindert werden.
- Die Anzahl der Threads im Thread-Pool ist unbegrenzt.
- Threads, die in einer Warteschlange auf den nächsten Auftrag warten, werden nicht blockiert.
- Threads im Thread-Pool können wiederverwendet werden.
- Durch eine hohe Anzahl von blockierten Threads kann das Starten von Aufgaben verhindert werden.
Was passiert wenn ein Prozess den kritischen Abschnitt betritt?
Wenn ein Prozess einen kritischen Abschnitt betritt, darf kein weiterer Prozess einen dazu potentiellen Konflikt stehendem kritischen Abschnitt betreten
Gilt das eine Unterbrechungsperre in jedem Fall die verzahnte Ausführung von Kernoperationen verhindert?
- Falsch, das gilt nur für Einprozessormaschinen
- Bei Mehrprozessorsystemen kann es trotzdem zu einer verzahnten Ausführung von Kernoperationen kommen, wenn sie simultan auf zwei Prozessoren bearbeitet werden und Speicherzugriffe verzahnt ablaufen
Stimmt es, dass bei einem Mehrprozessorsystem ohne Unterbrechungen eine simple Interruptsperre reicht, um den Kernausschluss zu realisieren?
- Das System hat keine Unterbrechungen, deswegen bringt eine Interruptsperre nichts
- Wir müssen daher die verzahnte Ausführung kritischer Abschnitte vermeiden und brauchen eine Kernsperre
Ist kooperatives-Multithreading mit User-Level Threads leicht umsetzbar?
Nein, da Threads auf User-Level für Kernel “unsichtbar” sind und die Threads die Kontrolle freiwillig abgeben müssen.
Kernel-Level Threads
Wird bei einem Seitenfehler der ganze Prozess suspendiert?
Nein, der Kernel erkennt die Quelle (Thread) des Seitenfehlers und suspendiert nur den entsprechenden Verursacher (Thread)
Kann man für verschiedene Kernel-Level Threads andere Thread-Scheduler einsetzen?
Nein, da Threads dem Kernel bekannt sind und es wird ein Thread-Scheduler für den gesamten Kernel benutzt