Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Hauptstudiumsprüfungen » Lehrstuhl 4 » Prüfung
Datum: 05.03.2025
Pruefer: Volkmar Sieh
Ergebnis: 1.0
Prüfung
Wie funktioniert Kooperatives Scheduling?
→ Threads müssen sich kennen und kooperieren, sonst Monopolisierung
→ resume() → Threadwechsel
Wie funktioniert resume() ausführlich?
Wie funktioniert das jetzt, wenn ein Thread noch nicht gelaufen ist?
→ Vorbereitung Stack für erstes resume()
Was ändern für präemptives Scheduling?
→ interrupt (Timer)
→ Scheduler
Scheduling Kriterien
→ Anwendungs- / Systemsicht
→ Betriebsarten
Scheduler im Rechenzentrum?
→ Durchsatz, wenig bis kein präemptives Scheduling
Interrupt (Geräte-)Arten
→ IO-Geräte, Timer, IPI
Edge / Level triggered Interrupts und Einordnung Geräte?
→ Level: zB. Tastatur, Interaktion mit HW nötig, signalisiert bis Daten abgeholt
→ Edge: zB. Timer (Information, keine Interaktion nötig)
Wie Interrupt Verlust?
→ interrupts deaktiviert (zB. während interrupt Behandlung)
Früher aber nur Edge triggered interrupts, hat trotzdem funktioniert?
→ bisschen stuck, ich meinte, dass der Interrupt controller den Interrupt ja speichern könnte (in dem Moment dachte ich eigentlich an so etwas wie ein pending bit, habe ich aber nicht klar so formuliert), nachdem mir das verneint wurde, habe ich nicht mehr in die Richtung überlegt (extra pending bits für jedes Gerät wäre richtige Antwort)
→ Überlegung: Annahme CPU schnell genug?
Kann ja aber trotzdem passieren (der Interrupt-Verlust)
Man verliert ja auch keine Timer Interrupts, wäre ja schlecht für eine Systemzeit
→ pending bit für jedes Gerät im Interrupt-Controller
Anderes Thema: Wie funktioniert ein Ticketlock?
→ ausführliche Erklärung
Was ist eine Semaphore?
→ Synchronisation + Betriebsmittel-Verwaltung
→ Mutex erwähnt
Unterschied Mutex?
→ spezialisierte Semaphore, mit 1 initialisiert
Semaphore implementieren auf Papier
→ direkt mit passivem Warten und Synchronisation auf Ebene 1/2
→ während des Schreibens Funktionsweise und Synchronisation erklärt
Thread blockiert sich, hat aber E1/2 gelockt, ist ja jetzt schlecht, wenn er sich blockiert oder?
→ leave() nach Scheduler::resume()
Fazit:
Eine entspannte Atmosphäre, es wurde genug Zeit zum Überlegen gelassen.
Es war auch nicht schlimm, wenn man mal stuck war.
