Operating Systems BFH
Fragen zu Operating Systems Modul der BFH
Fragen zu Operating Systems Modul der BFH
Kartei Details
Karten | 51 |
---|---|
Sprache | Deutsch |
Kategorie | Informatik |
Stufe | Universität |
Erstellt / Aktualisiert | 11.12.2023 / 24.01.2024 |
Weblink |
https://card2brain.ch/box/20231211_operating_systems_bfh
|
Einbinden |
<iframe src="https://card2brain.ch/box/20231211_operating_systems_bfh/embed" width="780" height="150" scrolling="no" frameborder="0"></iframe>
|
Threads werden hauptsächlich für parallele Ausführungen innerhalb eines Programms verwendet, um die Effizienz zu steigern, wie bei der parallelen Datenverarbeitung, gleichzeitigen Netzwerkanfragen und für Benutzeroberflächen, die während der Ausführung von Hintergrundprozessen reaktionsfähig bleiben.
Eine Semaphore kann in der Praxis Werte von 0 bis zu einem definierten Maximalwert annehmen, wobei der Maximalwert die Anzahl der Threads oder Prozesse angibt, die gleichzeitig auf eine Ressource zugreifen dürfen. Die meisten Anwendungen verwenden Semaphoren als Binärsemaphore (Mutex mit Werten 0 oder 1) oder als Zählsemaphore, bei denen der Wert größer als 1 ist und die Anzahl der gleichzeitigen Zugriffe auf eine Ressource angibt.
Critical Sections sind Teile eines Programmcodes, die auf gemeinsame Ressourcen zugreifen und daher synchronisiert werden müssen, um Race Conditions zu verhindern.
Locks sollten auf Deadlock-Freiheit, Effizienz (geringe Verzögerung und Overhead), Fairness (gleiche Chancen für alle Threads, den Lock zu erhalten) und Robustheit (Widerstandsfähigkeit gegen Fehler) getestet werden.
Das Hold-and-Wait Problem tritt auf, wenn Prozesse, die bereits Ressourcen halten, auf weitere Ressourcen warten. Dies kann Deadlocks verursachen. Eine Lösung ist die One-Shot-Allokation, bei der alle notwendigen Ressourcen gleichzeitig angefordert werden müssen.
Das "Dining Philosophers" Problem illustriert die Herausforderungen der Prozesssynchronisation und Deadlock-Vermeidung. Es ist ein wichtiges Lehrbeispiel für die Konzepte der Concurrency und Synchronisation in der Informatik.
Das Produzenten-Konsumenten-Problem beschreibt zwei Prozesse, wobei einer Daten produziert und der andere sie konsumiert. Die Synchronisation muss sicherstellen, dass der Konsument nicht auf leere Daten zugreift und der Produzent nicht in einen vollen Puffer schreibt. Lösungen umfassen Semaphore oder Bedingungsvariablen, um den Zugriff auf den Puffer zu synchronisieren.
Das Problem der Dining Philosophers ist ein klassisches Beispiel für Deadlocks und Ressourcenknappheit in einem System. Es tritt auf, wenn jeder Philosoph auf eine Gabel wartet, die vom Nachbarn gehalten wird, was zu einem Deadlock führen kann. Die Lösung kann in Strategien zur Vermeidung von Deadlocks liegen, wie der Anforderung aller benötigten Ressourcen gleichzeitig oder der Einführung einer asymmetrischen Zugriffsordnung für Ressourcen.
Bedingungsvariablen werden verwendet, um Threads zu blockieren, bis eine bestimmte Bedingung erfüllt ist. Sie ermöglichen es einem Thread, auf ein Ereignis oder einen Zustand zu warten, während gleichzeitig Ressourcen für andere Threads freigegeben werden.
Die vier notwendigen Bedingungen für Deadlocks sind: gegenseitiger Ausschluss, Halten und Warten, keine Ressourcenentziehung und zirkuläres Warten.
Das Problem der Schreiberverhungerung bei Reader-Writer-Locks kann durch die Einführung von Schreibervorrang gelöst werden, wo das Schreiben Vorrang vor dem Lesen hat, oder durch die Verwendung von Fairness-Mechanismen, die sicherstellen, dass Writer nicht unbegrenzt warten müssen.
Der Scheduler kann Aufgaben auf CPUs aufteilen, indem er diejenigen mit kürzerer Ausführungszeit zuerst ausführt (Shortest Job First) oder durch den Einsatz von Multitasking, um I/O-Wartezeiten effizient zu nutzen und die Turnaround-Zeit zu minimieren.
Wenn ein File (z.B. foo/bar mit einer Größe von 3 Blocks) gelesen wird, welche Schritte müssen dann durchgeführt werden?
Schritt 1: Die inode von 'foo' lokalisieren. Schritt 2: Wenn es ein Verzeichnis ist -> Daten des dazugehörigen Blocks lesen. Schritt 3: Die inode von 'foo' lokalisieren. Wenn ein Verzeichnis -> zu Schritt 2 zurückkehren Schritt 4: Die inode von 'bar' lesen, Rechte prüfen, alloziieren und den File Descriptor zurückgeben. Schritt 5 (data blocks): Die inode lesen, um die Adresse des Blocks zu finden. Schritt 6: Den Datenblock lesen Schritt 7: Die inode von 'bar' aktualisieren Schritt 8: Repeat
Semaphoren sind flexibler als Mutexe, da sie nicht nur gegenseitigen Ausschluss ermöglichen, sondern auch eine bestimmte Anzahl von Threads gleichzeitig eine Ressource nutzen lassen können (Zählsemaphoren).
Mehr Parallelität führt nicht immer zu höherer Geschwindigkeit aufgrund von Overheads wie Kontextwechseln und Synchronisationskosten. Eine gute Praxis ist es, den Bereich von Locks zu minimieren, Locks nur so lange wie nötig zu halten und feinkörnige Synchronisation zu verwenden, um Parallelität effizient zu nutzen.
`sem_post` erhöht den Wert eines Semaphors und signalisiert damit, dass eine Ressource verfügbar ist. `sem_wait` verringert den Wert eines Semaphors und wartet, wenn nötig, bis eine Ressource verfügbar wird.
Ein Deadlock ist eine Situation, in der zwei oder mehrere Prozesse auf Ressourcen warten, die von den anderen Prozessen gehalten werden, wodurch ein Warten entsteht, das niemals endet. Deadlocks können umgangen werden, indem Ressourcen in einer festgelegten Reihenfolge angefordert werden, sodass zirkuläres Warten nicht möglich ist.
Spin Locks können zu CPU-Zeitverschwendung führen, da ein Thread in einer aktiven Schleife wartet. Verbesserungen können durch den Einsatz von Blockierung statt aktiver Warteschleifen oder durch das Hinzufügen von Backoff-Algorithmen erreicht werden.
Spin Locks lassen Threads in einer Schleife aktiv auf die Freigabe warten, was zu CPU-Zeitverschwendung führen kann. Ticket Locks ordnen wartenden Threads hingegen eine "Ticketnummer" zu, wodurch die Reihenfolge der Bedienung festgelegt und Fairness verbessert wird.
How can I/O devices be accessed and used by the OS?
For the communication with I/O devices the OS needs drivers installed that help with communications with the device