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
    - Mailingliste
    - 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 2010/11  >  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.

Analog 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 und zur Abgabe des Prozessors gezwungen 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 Stand: 2010-12-21 12:18   BO, DL