2012-02-08 6 views
-1

코드에서 time 함수를 호출하고 값을 저장해 봅시다. 그런 다음 인터럽트를 비활성화하고 실행하는 데 드는 사소한 시간이 소요되는 일부 코드가 실행됩니다. 그런 다음 인터럽트를 갱신하고 time 함수의 값을 얻습니다.time.h의 time()은 어떻게 작동합니까?

start = time (NULL); 
disable_interrupts(); 
... 


... 
enable_interrupts() 
end = time (NULL); 

시작과 끝이 정확히 동일할까요? 인터럽트를 비활성화하면 이상한 행동을 일으킬 수 있습니까?

+3

os/kernel/CPU 아치는 무엇입니까? (간단한 시간 추적을위한 인터럽트 사용은 드문 경우가 아닙니다.) – Mat

+1

전체 프로세스가 1 초 미만으로 걸립니까? – Foggzie

+0

섹션에서 수행 한 작업을 늘리면 시차가 변경되지 않습니까? – perreal

답변

3

플랫폼/OS에 따라 (이는 임베디드 유형처럼 느껴짐) 일부 시간 구현에서는 타이머 인터럽트를 사용하거나 심지어 vblank/hblank 인터럽트를 계산합니다. 인터럽트를 끄고이 결과를 얻는 것이 이것을 확인하는 것으로 보인다. BTW, 나는 사소한 양의 시간 동안 인터럽트를 끄는 것이 많은 어려움을 겪고 있다는 점에서 다른 사람들과 동의한다. 정확히 무슨 일이 벌어지고 있는지 정확히 알지 못한다면, 나는 정확히 말하자면 발에서 쉽게 쏘고 수개월 전까지는 알지도 못합니다.