Friedrich-Alexander-Universität UnivisSuche FAU-Logo
Techn. Fakultät Willkommen am Department Informatik FAU-Logo
Logo I4
Lehrstuhl für Informatik 4
Betriebssysteme
 
  Vorlesung
    - UnivIS-Infos
    - Inhalt
    - Folien
 
  Übungen
    - UnivIS-Infos
    - Inhalt
    - Ergänzendes Material
    - Terminübersicht
    - Aufgaben
       * Umgebung
       * Typische Fehler
       * Aufgabe 1
          Dokumentation
       * Aufgabe 2
          Dokumentation
       * Aufgabe 3
          Dokumentation
       * Aufgabe 4
          Dokumentation
       * Aufgabe 5
          Dokumentation
       * Aufgabe 6
          Dokumentation
       * Aufgabe 7
          Dokumentation
 
  Evaluation
Department Informatik  >  Informatik 4  >  Lehre  >  WS 2009/10  >  Betriebssysteme  >  Ãœbungen  >  Aufgaben  >  Aufgabe 5

Aufgabe 5: Zeitscheibenscheduling für OOStuBS/MPStuBS

Lernziele

  • Schutz kritischer Abschnitte im Betriebssystem mit Hilfe des Guard
  • Implementierung präemptivem Scheduling durch Timer-Interrupts

Aufgabenbeschreibung

Die Synchronisation der Aktivitäten innerhalb von OOStuBS/MPStuBS ist in Aufgabe 3 auf die Verwendung des Pro-/Epilogmodells umgestellt worden. Nun soll eine grobgranulare Locking-Strategie verwendet und eine Systemaufrufschnittstelle definiert werden. Der Scheduler soll ausgelöst durch den Timer-Interrupt Threads verdrängen können.

Hierzu müssen die Klassen Guarded_Scheduler, Thread, PIT und Watch implementiert werden.

Um aus Benutzerprogrammen heraus die geschützten Methoden des Schedulers aufrufen zu können, darf die globale Variable scheduler nicht länger ein Objekt der Klasse Scheduler sein, sondern muss eine Instanz der Klasse Guarded_Scheduler sein.

a5.dot

Klassenübersicht für Aufgabe 5

MPStuBS

In MPStuBS gab es schon in Aufgabe 4 die Problematik, dass die Methoden des Schedulers von mehreren Prozesoren aus gleichzeitig aufgerufen werden konnten, und deswegen die Zugriffe auf die Bereitliste synchronisiert werden mussten. Da die Betriessystemfunktionen nun in der Syscall-Schnittstelle mit dem Guard synchronisiert werden sollen, müssen die expliziten Synchronisationsaufrufe aus Aufgabe 4 entfernt werden.

Zusätzlich zum Scheduling soll nun auch die Implementierung von Scheduler::kill(Entrant&) präemptiv erfolgen. Sollte der zu beendende Prozess gerade auf einem anderen Prozessor laufen, dann muss dieser mit Hilfe eines Interprozessorinterrupts (IPIs) unterbrochen werden. Implementiert dazu in der Klasse APICSystem die Methode APICSystem::sendCustomIPI(), die mit Hilfe des Local APICs Interrupts an andere CPUs schicken soll. Die Interruptbehandlung für den IPI soll in der Klasse Assassin implementiert werden.

Hilfestellung

  Impressum   Datenschutz Stand: 2010-07-19 12:34   BO, DL