Hallo,
du kannst in einer Zeitschleife einfach Taktzyklen verbraten, hier ein Beispiel in C:
volatile int i;
for(i = 0; i < 1000000; i++) {
/* nichts */
}
Wie lange die Schleife dauert, hängt von deiner CPU ab. Dieses Prinzip nutzt man normalerweise nur für Wartezeiten im Mikrosekundenbereich.
Für längere Zeiten nutzt man einen Timer, also zusätzliche Hardware. Jeder PC besitzt dafür einen PIT-Baustein (
Details im Wiki). Der PIT läuft mit einer festen Frequenz (1,12 MHz) und kann regelmäßig einen Interrupt auslösen - wenn du die Interrupts zählst, weißt du, wie viele Zeiteinheiten vergangen sind. Oder du liest den Zählerstand direkt aus.
Ein moderner Ersatz für den PIT ist der HPET (
Detail bei osdev.org). Außerdem gibt es noch die Echtzeituhr (
Details im Wiki), mit der du die "wahre" Uhrzeit auslesen kannst.
In einem ordentlichen Betriebssystem wartet man nicht einfach längere Zeiten ab, sondern legt sich für eine gewisse Zeit schlafen (d.h. man lässt sich aufwecken, wenn die gewünschte Wartezeit vorbei ist).
Gruß,
Svenska