Probeklausur 1 Flashcards
Allgemein
Welche Aussagen über Betriebssysteme mit Mikrokern sind wahr?
- Prozessmanagement und Interprozesskommunikation sind Teil des Kernels
- Allgemein sind Mikrokerne schneller als monolithische Kerne
- Speicher-Management, Dateisystem & Treiber sind Teil des Kernels
- Theoretisch sind Mikrokerne robuster als monolithische Kerne
- Prozessmanagement und Interprozesskommunikation sind Teil des Kernels
- Theoretisch sind Mikrokerne robuster als monolithische Kerne
Allgemein
Welche Aussagen über Betriebssysteme mit monolithischem Kern sind wahr?
- Prozessmanagement und Interprozesskommunikation sind Teil des Kernels
- Monolithische Kerne erfordern mehr Kontext-Switches für einen Systemaufruf als MIkrokern
- Monolithische Kerne haben mehr Features als Mikrokerne
- Kommunikation bzw. Application und monolithischer Kern ist nur durch Nachrichtenübergabe möglich
- Prozessmanagement und Interprozesskommunikation sind Teil des Kernels
- Monolithische Kerne haben mehr Features als Mikrokerne
Allgemein
Welche Aussagen sind wahr über Kernel Mode / User Mode?
- Von nicht privilegierten Benutzern gestartete Anwendungen werden immer Kernel Mode ausgeführt
- Kernel Mode ermöglicht Zugriff auf alle Speicheradressen
- Im Vergleich zum Kernel Modus tritt im User-Mode eine Leistungsverbesserung auf
Kernel Mode ermöglicht Zugriff auf alle Speicheradressen
Prozesse
Welche Aussagen über Multitasking sind wahr?
- Kooperatives Multitasking erfordert einen Timer-Interrupt
- Mehrere Prozesse können parallel ausgeführt werden, wenn Multitasking verfügbar ist
- Multitasking erfordert einen Multi-Core-Prozessor oder Multiprozessor System
- Multitasking kann durch schnelles Umschalten zwischen Prozessen auf einen Prozessor implementiert werden
- Mehrere Prozesse können parallel ausgeführt werden, wenn Multitasking verfügbar ist
- Multitasking kann durch schnelles Umschalten zwischen Prozessen auf einen Prozessor implementiert werden
Prozesse
Das Wechseln von Prozessen wirkt sich negativ auf die Anwendungsperformance aus, verglichen mit einem System mit nur einer Anwendung. Warum?
- Die Anzahl der Schritte in der Anwendungspipeline des Prozessors muss beim Prozesswechsel geändert werden.
- Speichern und Wiederherstellen des Prozessorstatus (Register) erfordert zusätzlichen Speicherzugriff
- Das PNR Register muss auf die neue Prozess ID gesetzt werden
- Wechseln des Adressraums führt zu vielen Cache-Misses
- Speichern und Wiederherstellen des Prozessorstatus (Register) erfordert zusätzlichen Speicherzugriff
- Wechseln des Adressraums führt zu vielen Cache-Misses
Synchronisation
Welche der folgenden Aussagen sind wahr?
- Gegenseitiger Ausschluss kann mit einer binären Semaphore realisiert werden
- Gegenseitiger Ausschluss kann mit allen Semaphoren ohne Kenntnis des Zählerwerts realisiert werden
- Der Zähler von Semaphoren gibt die Anzahl möglicher up()-Aufrufe an, bevor der Aufrufer blockiert
- Bestimmte verschränkte Ausführungen können mit einem Monitor vermieden werden
- Ein Monitor garantiert gegenseitigen Ausschluss für höchstens 2 Prozesse
- Gegenseitiger Ausschluss kann mit einer binären Semaphore realisiert werden
- Bestimmte verschränkte Ausführungen können mit einem Monitor vermieden werden
Synchronisation
The following Code Snippet shows the function GetWork() of a central distributor of processing jobs (WorkItems). Threads call GetWork() to retrieve another WorkItem for further processing. GetWork() returns null if there ist no WorkItem left. All WorkItems are pre-generated and internally saved in an array. NextItem always points to the next, not yet processed WorkItem. NextItem is incremented each time when another WorkItem has been returned.
class WorkPool { WorkItem[] workItems; int nextItem = 0; public WorkItem GetWork() { WorkItem result = null; if (workItems [nextItem] != null) { result = workItems[nextItem]; nextItem++; } return result } }
2 Threads rufen getWork() zur gleichen Zeit auf, während es nur ein WorkItem an Index 0 gibt. Alle anderen Felder im Array sind null. Was sind die beiden möglichen Ergebnisse aus diesen Funktionsaufrufen?
- Beide Aufrufe geben “null” zurück
- Beide Aufrufe geben ein WorkItem zurück
- Nur ein Aufruf gibt ein WorkItem zurück
- Beide Aufrufe geben ein WorkItem zurück
- Nur ein Aufruf gibt ein WorkItem zurück
Synchronisation
The following Code Snippet shows the function GetWork() of a central distributor of processing jobs (WorkItems). Threads call GetWork() to retrieve another WorkItem for further processing. GetWork() returns null if there is no WorkItem left. All WorkItems are pre-generated and internally saved in an array. NextItem always points to the next, not yet processed WorkItem. NextItem is incremented each time when another WorkItem has been returned.
class WorkPool { WorkItem[] workItems; int nextItem = 0; public WorkItem GetWork() { WorkItem result = null; if (workItems [nextItem] != null) { result = workItems[nextItem]; nextItem++; } return result } }
Welche Zeilen enthalten den minimal kritischen Abschnitt?(ohne Berücksichtigung von Linien, die aus Klammern bestehen)
- Linie 4 bis einschließlich 11
- Linie 5 bis einschließlich 10
- Linie 6 bis einschließlich 8
- Linien 7 & 8
- Keine der Antworten treffen zu
Linie 6 bis einschließlich 8
- Immer eine Bedingung im kritischen Abschnitt
Synchronisation
The following Code Snippet shows the function GetWork() of a central distributor of processing jobs (WorkItems). Threads call GetWork() to retrieve another WorkItem for further processing. GetWork() returns null if there is no WorkItem left. All WorkItems are pre-generated and internally saved in an array. NextItem always points to the next, not yet processed WorkItem. NextItem is incremented each time when another WorkItem has been returned.
class WorkPool { WorkItem[] workItems; int nextItem = 0; public WorkItem GetWork() { WorkItem result = null; if (workItems [nextItem] != null) { result = workItems[nextItem]; nextItem++; } return result } }
Welche Variablen können mit lock(xyz) gesperrt werden, um Fehler aufgrund der gleichzeitigen Ausführung zu vermeiden?
- lock(workItems)
- lock(result)
- lock(this)
- lock(nextItems)
- lock(workItems)
- lock(this)
- Lockt alle Elemente des Objekts also auch das richtige
Deadlocks
Welche der folgenden Aussagen sind wahr?
- Deadlock Vorbeugung funktioniert durch verhindern aller Bedingungen, unter dem Deadlocks auftreten
- Deadlock Vorbeugung funktioniert durch Verhindern einer Bedingung, unter den Deadlocks auftreten
- Deadlock Vorbeugung funktioniert indem jede Ressource der Zuordnungsanforderung überprüft wird
Deadlock Vorbeugung funktioniert durch Verhindern einer Bedingung, unter den Deadlocks auftreten
Deadlocks
Welche der folgenden Aussagen sind wahr?
- Deadlock Vermeidung funktioniert, indem jede Ressourcenzuweisung Anforderung überprüft wird
- Deadlock Vermeidung funktioniert indem Deadlocks erkannt und aufgelöst werden
- Deadlocks können vermieden werden, indem alle Ressourcen aufgelistet und Ressourcen in aufsteigender Reihenfolge angefordert werden
- Deadlocks können durch Anfordern von Ressourcen paarweise verhindert werden
- Deadlock Vermeidung funktioniert, indem jede Ressourcenzuweiseung Anforderung überprüft wird
- Deadlocks können durch Anfordern von Ressourcen paarweise verhindert werden
Deadlocks
Die vier Prozesse A, B, C, D versuchen einige der Ressourcen P, Q, R, S zu reservieren. Die erste Anforderung für eine Ressource wird erteilt. Andere Anforderungen für dieselbe Ressource blockieren den Prozess. Betrachten sie die folgenden verteilten Ausführungen von Zuordnungsanforderung.
- C fragt P an
- B fragt Q an
- A fragt R an
- D fragt S an
- A fragt S an
- D fragt P an
- C fragt R an
- B fragt S an
Welche Aussage ist wahr?
- “A fragt S an” führt zu Deadlock
- “D fragt P an” führt zu Deadlock
- “C fragt R an” führt zu Deadlock
- “B fragt Q an” führt zu Deadlock
- “B fragt S an” führt zu Deadlock
- “D fragt S an” führt zu Deadlock
- “A fragt R an” führt zu Deadlock
- Es gibt keine Deadlocks
“C fragt R an” führt zu Deadlock
Speicherverwaltung
Eine Maschine ohne virtuellen Speicher hat 128 KByte Hauptspeicher. Der Speicher wird in 2 KByte Blöcken zugeordnet und in einer Bitmap verwaltet
Welche Größe hat die Bitmap in Bytes
- 256
- 64
- 8
- 2^128
- 128
- 128 Kbytes
8
- Speichergröße/(Speicherseite * 8)
- -> 128/(2 * 8)
Speicherverwaltung
Welche Aussagen sind wahr?
- Eine Zuordnungsanfrage für 3 Kbyte Anwendungsspeicher verursacht immer 1 Kbyte Fragmentierung (intern)
- Eine Zuordnungsanfrage für 3 Kbyte Anwendungsspeicher verursacht immer 1 Kbyte Fragmentierung (extern)
- Eine Zuordnungsanfrage für 3 Kbyte Anwendungsspeicher kann 1 Kbyte externe Fragmentierung verursachen
- Eine Zuordnungsanfrage für 3 Kbyte Anwendungsspeicher kann bis zu 2 Kbyte externer Fragmentierung führen
- Eine Zuordnungsanfrage für 3 Kbyte Anwendungsspeicher verursacht immer 1 Kbyte Fragmentierung (intern)
- Eine Zuordnungsanfrage für 3 Kbyte Anwendungsspeicher kann bis zu 2 Kbyte externer Fragmentierung führen
Speicherverwaltung
Angenommen 120Kbyte Speicher sind zugeteilt und eine Anwendung beantragt 8Kbyte Speicher. Kann das Betriebssystem immer diese Anfrage erfüllen? Erklären Sie ihre Antwort!
Nur wenn der Speicher von 8kB zusammenhängend vorhanden ist.
Wenn externe Fragmentierung vorkommt kann es nicht erfüllt werden.
Deshalb kann die Anfrage nicht immer erfüllt werden.