Linux 커널에서 jiffie의 해상도는 무엇입니까?
현재 타이머 소스( )에 따르면 cat /sys/devices/system/clocksource/clocksource0/current_clocksource
Linux는 TSC를 사용하며 나노초 해상도를 갖습니다.
~에 따르면http://lxr.free-electrons.com/source/include/linux/jiffies.hjiffie는 1us보다 작지 않지만 더 클 수도 있습니다.
현재 해상도를 확인할 수 있는 방법이 있습니까?
답변1
맨페이지를 보시면man 7 time
HZ의 값은 커널 버전과 하드웨어 플랫폼에 따라 다릅니다. i386에서 상황은 다음과 같습니다: 2.4.x까지의 커널에서 HZ는 100이었고 0.01초의 일시적인 값을 제공했습니다. 2.6.0부터 HZ가 1000으로 증가하여 0.001초의 시간이 단축되었습니다. 커널 2.6.13부터 HZ 값은 커널 구성 매개변수이며 100, 250(기본값) 또는 1000이 될 수 있으며 각각 0.01, 0.004 또는 0.001초의 jiffies 값을 생성합니다. 커널 2.6.20부터 추가 주파수를 사용할 수 있습니다. 300은 일반 비디오 프레임 속도(PAL, 25HZ; NTSC, 30HZ)에 대해 균등하게 나누는 숫자입니다.
times(2) 시스템 호출은 특별한 경우입니다. 커널 상수 USER_HZ에 의해 정의된 단위로 시간을 보고합니다. 사용자 공간 응용 프로그램은
sysconf(_SC_CLK_TCK)를 사용하여 이 상수의 값을 결정할 수 있습니다 .
상수 를 조회할 수 있습니다 CLK_TCK
.
$ getconf CLK_TCK
100
이는 HZ 값, 즉 100을 알려줍니다. 이 값은 1초의 지피 수입니다.
참고자료
답변2
이들 소식통에 따르면,지피1/HZ
(어떤 가치가 HZ
있든 간에) :
이는 커널 종속 헤더 파일 중 하나에 정의되어 있습니다. 예:
/usr/include/asm-generic/param.h
에서 포함되는
/usr/include/linux/param.h
궁극적으로 <sys/param.h>
아키텍처별 디렉토리에 있을 수 있는 에서, 예를 들어 다음과 같습니다.
/usr/include/x86_64-linux-gnu/sys/param.h
소스는 이것이 컴파일 타임 상수이며 특정 시스템에 따라 다르다는 것을 분명히 보여줍니다.