x86 przerwać 0x1a wydaje się dawać zegara komputera, ale może tylko dać dokładny czas, aby w ciągu 55ms (AH = 0). Czy istnieje sposób na uzyskanie mniejszych przyrostów (i być może nieco bardziej "normalnych") niż na przykład 1ms? Próbuję stworzyć własny system operacyjny dla zabawek, więc nie mogę użyć niczego, czego sam nie potrafię napisać.uzyskać czas w przyrostach 1ms
5
A
Odpowiedz
3
Ponieważ tworzysz swój własny system operacyjny, nie musisz utrzymywać okresu timera. Istnieje możliwość przeprogramowania PIT w celu częstszego wyzwalania INT 8 (IRQ 0). Zobacz here.
Na nowszych komputerach można również skorzystać z High Precision Event Timer.
6
Możesz użyć instrukcji rdtsc
(odczyt znacznika czasu) na x86, aby uzyskać 64-bitowy znacznik czasu procesora w postaci edx:eax
. Implementacja tej instrukcji zależy od procesora, ale zwiększa się raz na zegar lub ze stałą szybkością. Z tego powodu rozdzielczość czasowa również jest różna, ale powinna być lepsza niż 1 ms.
Istnieją pewne zastrzeżenia do korzystania rdtsc
:
- Licznik datownik niekoniecznie jest zsynchronizowana całej rdzeni procesora. Może to być problem w procesorach wielowątkowych i wielordzeniowych.
- Licznik niekoniecznie rośnie ze stałą prędkością. Może to mieć wpływ na funkcje dławienia lub oszczędzania energii procesora.
- Hibernacja może spowodować zresetowanie licznika.
Odkąd piszesz swój własny system operacyjny, możesz nie martwić się niektórymi z tych problemów.
Powiązane problemy
- 1. znakowania działkę w przyrostach pi
- 2. Odejmowanie 1ms prowadzi do nieoczekiwanego zachowania
- 3. Jak uzyskać czas UTC
- 4. Potrzebujesz uzyskać czas w formacie 24-godzinnym, dodając Czas
- 5. uzyskać czas trwania pliku audio
- 6. Jak mogę uzyskać aktualny czas w C#?
- 7. Jak uzyskać czas epoki w C#?
- 8. Jak uzyskać czas trwania utworu w JPlayerze
- 9. Jak uzyskać czas utc w jQuery datetimepicker
- 10. Jak uzyskać czas obliczeń w NDK
- 11. jak uzyskać bieżący czas odtwarzania w wideo.js
- 12. Jak uzyskać monotoniczny czas trwania w python?
- 13. jak uzyskać podwójny czas kliknięcia w WPF
- 14. Jak uzyskać czas GMT w systemie Unix?
- 15. Scapy uzyskać czas przylotu pakietu
- 16. Zastosowanie uFormat aby uzyskać czas uniksowy
- 17. Jak uzyskać czas trwania filmu wideo?
- 18. Jak uzyskać czas uruchamiania systemu Android?
- 19. Jak uzyskać czas trwania pliku wideo?
- 20. Python: Jak uzyskać czas z obiektu datetime.timedelta?
- 21. Jak uzyskać string.format narzekać na czas kompilacji
- 22. Jak uzyskać aktualny czas w innym Strefie czasowej w Delphi?
- 23. Jak uzyskać czas w milisekundach w powłoce Androida?
- 24. Jak uzyskać czas w milisekundach w skrypcie bash?
- 25. Jak uzyskać czas w milisekundach od epoki unixowej w JavaScript?
- 26. Jak uzyskać bieżący czas w milisekundach w Androidzie
- 27. Jak uzyskać czas, który upłynął w C w milisekundach? (Windows)
- 28. Boost timer: jak uzyskać czas, kiedy potrzebuję?
- 29. Jak uzyskać czas przeszły od czasownika?
- 30. Jak uzyskać czas lokalny na iOS
można również użyć zegara APIC: http://wiki.osdev.org/APIC_timer – Necrolis