x86 인터럽트 0x1A는 컴퓨터의 시계 시간을 제공하지만 55ms (AH = 0) 이내의 정확한 시간 만 제공 할 수 있습니다. 아마 1ms 정도 더 작은 증분을 얻을 수있는 방법이 있습니까? 나는 내 자신의 장난감 OS를 만들기 위해 노력하고있어, 내가 쓸 수없는 것을 사용할 수 없다.1ms 단위로 시간 받기
5
A
답변
3
자신 만의 OS를 만들고 있기 때문에 타이머 기간을 유지할 필요가 없습니다. INT 8 (IRQ 0)을 더 자주 트리거하도록 PIT를 다시 프로그래밍 할 수 있습니다. here을 참조하십시오.
최신 컴퓨터의 경우 High Precision Event Timer을 사용할 수도 있습니다.
6
x86의 rdtsc
(타임 스탬프 카운터 읽기) 명령을 사용하면 edx:eax
에 64 비트 CPU 타임 스탬프를 사용할 수 있습니다. 이 명령어의 구현은 프로세서에 따라 다르지만 클럭마다 또는 일정한 속도로 한 번씩 증가합니다. 이 때문에 시간 해상도도 달라 지지만 1ms보다 좋을 것입니다.
는 rdtsc
를 사용하는 몇 가지주의 사항이 있습니다
- 타임 스탬프 카운터는 CPU 코어를 통해 동기화 필요는 없다. 이는 하이퍼 스레드 및 멀티 코어 CPU에서 문제가 될 수 있습니다.
- 카운터가 반드시 일정한 비율로 증가하지는 않습니다. 프로세서의 스로틀 또는 절전 기능에 의해 영향을받을 수 있습니다.
- 최대 절전 모드로 인해 카운터가 재설정 될 수 있습니다.
자신 만의 OS를 작성하고 있으므로 이러한 문제에 대해 걱정하지 않아도됩니다.
관련 문제
- 1. 24 시간 단위로 현재 시간과 날짜 받기
- 2. 시간 단위로
- 3. ManualResetEvent.WaitOne (1)이 1ms 이상 대기합니까?
- 4. Java, android, itnernet 서버에서 원자 시간 받기
- 5. LINQ를 사용하여 시간 단위로 그룹화
- 6. AJAX 요청 시간 받기
- 7. PHP에서 Windows 시간 받기
- 8. 타이머 경과 시간 받기
- 9. 현재 현지 시간 받기
- 10. 자바에서 다음 시간 받기
- 11. JXDatePicker에서 시간 받기
- 12. GLUT cpp에서 시간 받기
- 13. getSharedPreferences를 사용하여 시간 받기
- 14. 바이너리에서 날짜 시간 받기
- 15. 문자열에서 시간 받기
- 16. Android : 시간 받기
- 17. 정확하게 실행 시간을 측정하는 방법 (1ms 미만)
- 18. PHP date() 잘못된 시간 받기
- 19. OCCI에서 연결 시간 초과 받기
- 20. 두 날짜 간의 시간 받기.
- 21. 벤치마킹 : 알고리즘 사용자 시간 받기
- 22. 하늘색 서버에서 시간/시간대 받기
- 23. PHP - 제목 줄에 시간 받기
- 24. sharepoint dateandtime 필드 시간 받기
- 25. SqlException, 시간 초과 오류 받기
- 26. Java 원격 시스템 시간 받기
- 27. SIP 시간 단위로 통화를 측정하는 방법
- 28. LINQ to SQL - 시간 단위로 그룹화
- 29. 15 분 단위로 증가하는 형식의 시간 간격
- 30. SMTP 배달을 시간 단위로 제한하는 방법
APIC 타이머를 사용할 수도 있습니다. http://wiki.osdev.org/APIC_timer – Necrolis