Autor Thema: Zeitdifferenz / Zeitangabe.  (Gelesen 6485 mal)

WhiteDragon

  • Beiträge: 124
    • Profil anzeigen
Gespeichert
« am: 30. October 2005, 16:53 »
Hallo zusammen,

also man benötigt häufiger mal Zeitangaben oder Zeitmessungen. Bei Windows wird beispielsweise bei jedem Ereignis die Zeit mit angegeben, zu der das Ereignis stattfand.

Weiß einer, wie das genau gemacht wird? Holt man sich jedesmal die kompletten CMOS-Port-Angaben und berechnet daraus einen 32Bit-Wert mit der aktuellen Zeitangabe?

Kann man natürlich so machen, aber vielleicht kennt jemand ja eine bessere Methode...

[MM]

  • Beiträge: 130
    • Profil anzeigen
    • www.mmcoding.eu
Gespeichert
« Antwort #1 am: 30. October 2005, 18:45 »
Versuchs doch mal mit dem RDTSC Befehl, der schreibt die Anzahl der cycles seit dem Einschalten des Computers nach EDX:EAX.

MM

Legend

  • Beiträge: 635
    • Profil anzeigen
    • http://os.joachimnock.de
Gespeichert
« Antwort #2 am: 30. October 2005, 18:51 »
Ausserdem hast du mit PIT und RTC Methoden regelmäßig IRQs generieren zu lassen. Diese Zeiten kannst du aufsummieren. Beim Booten musst du natürlich einmal die aktuelle Zeit laden ...
*post*

WhiteDragon

  • Beiträge: 124
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 30. October 2005, 21:36 »
Danke für eure Antworten. Diese Dinge hatte ich auch schon betrachtet, sie haben aber zwei gewichtige Nachteile:

RDTSC ist nur ab Pentium implementiert, ich möchte aber alles ab 386 unterstützen. Außerdem werden hier Takte gezählt, ich hätte aber am liebsten 100stel- oder 1000stel-Sekunden, da die Taktrate natürlich von Rechner zu Rechner unterschiedlich ist.

Mir wäre aber geholfen, falls jemand eine totsichere Methode kennt, wie ich heraus bekomme, wie viele Takte z.B. in einer Sekunde liegen!

Der Nachteil an der IRQ-Methode ist ein anderer: Die Interrupts werden immer mal wieder kurz ausgeschaltet, da würde die Zeitmessung eventuell ungenau werden.

Dennoch danke ich für eure Antworten! Hat jemand noch eine andere Idee?

Legend

  • Beiträge: 635
    • Profil anzeigen
    • http://os.joachimnock.de
Gespeichert
« Antwort #4 am: 31. October 2005, 09:41 »
Nun ja, sagen wir mal so, ob die CPU grad IRQs annimmt interessiert den PIT  kein Stück.
*post*

WhiteDragon

  • Beiträge: 124
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 31. October 2005, 12:33 »
Ich versteh nicht ganz: Willst du sagen, dass eine exakte Zeitmessung dennoch machbar ist? Wäre schön, wenn du das etwas vertiefen könntest, zumal hier scheinbar keine anderen Ideen vorhanden sind.

SSJ7Gohan

  • Beiträge: 398
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 31. October 2005, 13:31 »
Wenn ein IRQ auftritt, wärend die IRQs deaktiviert sind, wird er sofort nach dem aktivieren der IRQs aufgerufen.

Legend

  • Beiträge: 635
    • Profil anzeigen
    • http://os.joachimnock.de
Gespeichert
« Antwort #7 am: 31. October 2005, 13:59 »
Richtig. Solange du nicht länger als 2 Zeitperioden brauchst gehen immerhin keine Sekunden verloren ...
*post*

 

Einloggen