IT

CLOCK_REALTIME과 CLOCK_MONOTONIC의 차이점은 무엇입니까?

lottoking 2020. 5. 20. 08:03
반응형

CLOCK_REALTIME과 CLOCK_MONOTONIC의 차이점은 무엇입니까?


리눅스에서 반환되는 클럭 CLOCK_REALTIME의 차이점을 설명해 주 시겠습니까?CLOCK_MONOTONICclock_gettime()

외부 소스에서 생성 된 타임 스탬프와 현재 시간 사이의 경과 시간을 계산해야하는 경우 더 나은 선택은 무엇입니까?

마지막으로, 시스템 시간을 정기적으로 조정하는 NTP 데몬이있는 경우 이러한 조정은 각각 CLOCK_REALTIMECLOCK_MONOTONIC?


CLOCK_REALTIME는 현재 벽시계, 시간과 관련하여 기계의 최고의 추측을 나타냅니다. 으로 이그나시오MarkR는 말,이 수단 CLOCK_REALTIME시스템 시간 시계로 앞뒤로 이동할 수는 NTP가 포함 변경됩니다.

CLOCK_MONOTONIC는 과거의 임의의 고정 지점 이후의 절대 경과 벽시계 시간을 나타냅니다. 시스템 시간 시계의 변경에 영향을받지 않습니다.

시스템을 재부팅하지 않고 한 시스템에서 관찰 된 두 이벤트 사이의 경과 시간을 계산 CLOCK_MONOTONIC하려면 가장 좋은 옵션입니다.

Linux에서는 CLOCK_MONTONICPOSIX 정의에 따라 일시 중단에 소요 된 시간을 측정하지 않습니다. CLOCK_BOOTTIME일시 중지 중에 계속 실행되는 단조로운 시계에 Linux 관련 사용할 수 있습니다 .


Robert Love의 책 LINUX System Programming 2nd Edition 은 특히 ​​11 장 pg 363의 시작 부분에있는 질문을 다룹니다.

단조로운 시간 소스의 중요한 측면은 현재 값이 아니지만 시간 소스가 엄격하게 선형 적으로 증가하므로 두 샘플링 간의 시간 차이 계산에 유용합니다

즉, 프로세스가 동일한 OS 인스턴스에서 실행되고 있다고 가정하므로 드리프트를 추정 할 수 있도록 주기적 보정을 실행하고 싶을 수도 있습니다.


CLOCK_REALTIMENTP의 영향을받으며 앞뒤로 이동할 수 있습니다. CLOCK_MONOTONIC틱당 1 틱씩 진행되지 않습니다.


뿐만 아니라 이그나시오의 대답은 , CLOCK_REALTIME가끔 뒤쪽으로 도약 앞으로 가서, 할 수 있습니다. CLOCK_MONOTONIC어느 것도하지 않습니다. 재부팅 할 때 재설정 되기는하지만 계속 진행됩니다.

강력한 앱 CLOCK_REALTIME은 때때로 앞뒤로의 도약 을 허용 할 수 있어야합니다 .

랩톱을 일시 중단 할 때 어떤 일이 발생하는지 상상해보십시오 . CLOCK_REALTIME이력서에 따라 앞으로 이동하지만 CLOCK_MONOTONIC그렇지 않습니다. VM에서 사용해보십시오.


POSIX 7 인용문

POSIX 7은 http://pubs.opengroup.org/onlinepubs/9699919799/functions/clock_getres.html 에서 두 가지를 모두 지정합니다 .

CLOCK_REALTIME:

이 시계는 시스템의 실시간 측정 시계를 나타냅니다. 이 시계의 경우 clock_gettime ()에 의해 반환되고 clock_settime ()에 의해 지정된 값은 Epoch 이후의 시간 (초 및 나노초)을 나타냅니다.

CLOCK_MONOTONIC (옵션 기능) :

이 시계의 경우 clock_gettime ()에 의해 반환 된 값은 과거의 지정되지 않은 지점 이후의 시간 (초 및 나노초)을 나타냅니다 (예 : 시스템 시작 시간 또는 Epoch). 이 시점은 시스템 시작 시간 후에 변경되지 않습니다. CLOCK_MONOTONIC 클럭 값은 clock_settime ()을 통해 설정할 수 없습니다.

clock_settime()중요한 힌트를 제공합니다. POSIX 시스템은 임의로 변경할 수 CLOCK_REALITME있으므로 계속해서 또는 앞으로도 흐르는 시스템에 의존하지 마십시오. NTP는를 사용하여 구현할 수 있으며 clock_settime()영향을 줄 수 CLOCK_REALITME있습니다.

리눅스 커널 구현은 에포크처럼 부팅 시간 이 걸린 것CLOCK_MONOTONIC 같습니다 : CLOCK_MONOTONIC의 시작점

참고 URL : https://stackoverflow.com/questions/3523442/difference-between-clock-realtime-and-clock-monotonic

반응형