나는주의했다. /proc/cpuinfo
캐시 라인 크기를 제공합니다.
# cat /proc/cpuinfo | egrep "(cache|clflush)"
cache size : 6144 KB
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat
pse36 clflush dts mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon
pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf eagerfpu pni pclmulqdq
ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt aes xsave avx hypervisor lahf_lm ida arat
epb pln pts dtherm xsaveopt
clflush size : 64
cache_alignment : 64
커널이 CPU 명령어 (또는 x86 / x32 / x64의 CPUID 기능) 또는 오프라인으로 컴파일 된 값 테이블을 사용하고 있다고 생각합니다. 몇 가지 타이밍 공격을 저지하기 위해 소프트웨어에서 정확한 값을 얻는 데 관심이 있습니다.
또한 커널이 컴파일 할 때 정적 값을 사용한다는 것도 알고 있습니다. 예를 들어, 커널은 ARM에 대해 64의 캐시 라인 길이를 사용합니다. 빌드하는 동안 런타임에 동적 값으로 전환됩니다.
커널은 정확히 어떻게 캐시 라인 크기를 결정합니까?
커널이 API를 검색하여 커널을 검색합니까?
항상 정확한가?
당신은 당신이 도움이되었거나 중요하다고 대답 한 대답을 upvote해야합니다. 또한 원래 질문의 포스터이기 때문에 쿼리를 완전히 처리 한 경우이를 받아 들여야합니다.
—
MariusMatutiae
@ 마리우스 - 스택 교환 네트워크가 어떻게 작동하는지 알고 있습니다. 그래서 당신의 요점은 정확히 알지 못합니다 ... 세 가지 질문 중 두 가지는 답이 없습니다.
—
jww