Praktische Einführung mit Virtualisierung
Stefan Bosse
Universität Koblenz - FB Informatik
Stefan Bosse - Grundlagen der Betriebssysteme - Modul T Zeitmanagement ::
Stefan Bosse - Grundlagen der Betriebssysteme - Modul T Zeitmanagement :: Timer
In einem Betriebssystem müssen häufig zeitliche Abläufe synchronisiert werden.
Zeitauflösung für Ereignisse könnte Mikro- oder Millisekunden sein
Daher wird in den meisten Betriebssystemen eine virtuelle Zeiteinheit genutzt, die Ticks.
Stefan Bosse - Grundlagen der Betriebssysteme - Modul T Zeitmanagement :: Programmable Interval Timer
Für die "Erzeugung" von Ticks werden Intervalltimer verwendet, also binäre Zähler. Diese stellen die Systemuhr des betriebssystem zur Verfügung. Nicht zu verwechseln mit der Real Time Clock (RTC), die eine nicht flüchtige Echtzeit in Sekunden usw. ausgibt.
Wikipedia
Der Programmable Interval Timer (PIT) war ursprünglich ein spezieller Baustein (Chip) im IBM-PC, der für die zeitliche Steuerung von Prozessen sorgte. Die am häufigsten verwendeten Timer-Chips waren die Typen 8253 und 8254 von Intel mit drei 16-Bit breiten Zählern.
Stefan Bosse - Grundlagen der Betriebssysteme - Modul T Zeitmanagement :: Programmable Interval Timer
A. Sahu, Dept. of Comp. Sc. & Eng. IIT Guwahati Die Architektur eines PITs (8254)
Stefan Bosse - Grundlagen der Betriebssysteme - Modul T Zeitmanagement :: Programmable Interval Timer
Stefan Bosse - Grundlagen der Betriebssysteme - Modul T Zeitmanagement :: Programmable Interval Timer
Der PIT hat verschiedene Betriebsarten:
Stefan Bosse - Grundlagen der Betriebssysteme - Modul T Zeitmanagement :: Programmable Interval Timer
Stefan Bosse - Grundlagen der Betriebssysteme - Modul T Zeitmanagement :: Programmable Interval Timer
Mehr Info gibt es hier:
https://wiki.osdev.org/Programmable_Interval_Timer
Stefan Bosse - Grundlagen der Betriebssysteme - Modul T Zeitmanagement :: Ticks,Frequenzen, Zeiten und Timer
Folgende Parameter sind die Zutaten des Zeitmanagements im Betreibssystem:
TIMER_FREQ=1193182TICKS_PER_SECOND=20TICKS_MILLITIME=1TICKS_PER_SECONDTIMER_COUNT=TIMER_FREQTICKS_PER_SECOND
D.h. der Timer muss immer mit TIMER_COUNT
intialisiert werden um die Vorgabe TICKS_PER_SECOND
zu erreichen.
Stefan Bosse - Grundlagen der Betriebssysteme - Modul T Zeitmanagement :: Ticks,Frequenzen, Zeiten und Timer
Die kleinste von Programmen (und dem Kernel selber) messbare Zeiteinheit ist 1/TICKS_PER_SECOND
, also z.B. 20 ms
Benötigt man eine genauere Zeitmessung so müssen entweder andere Timer oder der aktuelle Timercount des PIT benutzt werden.
Bekannt ist mindestens die Anzahl der Ticks (Clicks), dann kann man den aktuellen Zählerwert des PIT auslesen und kann die Zeit zwischen zwei Ticks intgerpolieren.
Bei ca. 1 MHZ Timerfrequenz ist die kleinste Auflösung 1 μs.
Aufgabe: Implementiere im Basekernel eine neue Funktion clock_micros
die die Systemzeit in Mikrosekunden zurück gibt.