시스템 시계는 커널에 의해 유지되는 반면, 하드웨어 시계는 실시간 시계(RTC)에 의해 유지됩니다.
- 두 시계가 동일한 주파수에서 작동합니까?
- 둘은 서로 독립적인가요?
- 실시간 시계가 실패하면 어떻게 되나요? 시스템 시계에 영향을 줍니까?
누구든지 이 두 시계의 차이점을 말해 줄 수 있나요?
답변1
두 시계가 동일한 주파수로 작동합니까?
일반적으로 컴퓨터/장치/시스템 내부에는 두 개의 시계가 있습니다. 그 중 하나는 배터리(일반적으로 메인 배터리 또는 임베디드 시스템의 슈퍼커패시터일 수 있는 CR2032)로 구동되며 전용 칩으로 실행됩니다. 다른 하나는 CPU 클록 소스(자체 석영 크리스털 포함)에 의해 구동됩니다.
일반적으로 32.768kHz 크리스털에서 실행됩니다. 다른 하나는 CPU 크리스털 Mhz 또는 GHz 범위에서 나옵니다. CPU 모델이 많기 때문에 차이점도 많습니다.
둘은 서로 독립적인가요?
네, 대부분 그렇습니다. 그러나 하나는 다른 하나를 조정할 수 있습니다(임베디드 Linux에서는 일반적 으로 또는
hwclock
옵션과 함께 명령을 사용합니다 ). CPU 시계는 시작 시 칩 시계에 의해 설정됩니다(CPU는 시작 시 현재 시간을 알 수 없음). 네트워크에 있는 시스템의 경우 CPU 시계는 NTP(Network Time Protocol)를 통해 네트워크에서 더 나은 시간 값을 찾은 다음 시계 칩 내부의 값을 조정하거나 수정할 수 있습니다.-r
-w
실시간 시계 오류가 시스템 시계에 영향을 미치면 어떻게 되나요?
예, 물론입니다. 예를 들어 배터리가 방전되면 컴퓨터는 완전히 시대착오적인 실시간 개념으로 부팅되지만 요즘 대부분의 시스템은 네트워크에 연결되어 있으며 NTP 프로토콜을 통해 부팅한 후 바로 실시간 개념을 업데이트합니다. .
누구든지 이 두 시계의 차이점을 말해 줄 수 있나요?
위에서 언급했듯이 하나의 클럭 소스는 칩이고 다른 하나는 CPU입니다.
CPU에는 RTC라고도 불리는 내부 값이 있기 때문에 칩 클럭을 RTC 클럭이라고 부르는 것을 피합니다. 하지만 그렇습니다. 그것은 일반적인 이름입니다.
관련된:
답변2
두 시계가 동일한 주파수로 작동합니까?
반드시 그런 것은 아니지만 일반적으로 그렇지 않습니다. 하드웨어 시계(특히 Numa 및 임베디드 시스템에 많이 있을 수 있음)는 특정 주파수에서 뛰는 발진기입니다.결정그리고 특별한 파티션을 제공하세요. 이것들은 모두클럭 소스.
이것시스템 시계실제 클럭 소스는 아니지만 주어진 하드웨어 클럭에 따라 달라집니다.할 수 있는일부 RTC입니다.
RTC가 여러 개인 경우 시스템이 RTC라고 부르는 RTC를 udev 규칙에 따라 선택할 수 있습니다.
둘은 서로 독립적인가요?
보통은 그렇지 않지만... 아마도요.
커널은 다양한 하드웨어 클럭 소스를 제공하며, 가장 일반적인 소스로는
타임스탬프 카운터(TSC), 고정밀 이벤트 타이머(HPET), ACPI 전원 관리 타이머(ACPI_PM), 프로그래밍 가능한 간격 타이머(PIT) 및 실시간 타이밍 장치 클럭이 있습니다. (RTC).
시스템 클럭에 사용 가능한 클럭 소스를 나열할 수 /sys/devices/system/clocksource/clocksource0/available_clocksource
있으며 에코할 기본 시스템 클럭 소스를 선택할 수 있습니다./sys/devices/system/clocksource/clocksource0/current_clocksource
그래서 당신은할 수 있는시스템 시계가 RTC에 종속되도록 효과적으로 강제합니다.
이것은일반적으로 말하면RTC는 읽는 데 비용이 많이 들고 일반적으로 CPU 주파수를 기반으로 하는 클록 소스보다 해상도가 낮기 때문에 권장되지 않습니다.
따라서 실시간 커널과 함께 사용하기에 적합하지 않습니다.
Linux 커널에 선호되는 클럭 소스는 TSC입니다.. (부팅 프로세스를 시작할 때 시스템은 이에 의존합니다.) 내 부팅 로그에는 다음 내용이 표시됩니다.
클럭 소스: 클럭 소스 tsc-early로 전환
그러나 틱리스 시스템에서는 이 소스가 확실히 불안정하고 안정적으로 사용할 수 없습니다. 이 경우 커널은 두 번째로 선호되는 옵션인 HPET로 전환됩니다(사용 가능한 경우).
tsc: 유휴 상태의 TSC 정지로 인해 TSC를 불안정한 것으로 표시합니다.
클록 소스: 클록 소스로 전환 hpet
실시간 시계에 오류가 발생하면 시스템 시계에 영향을 미치게 됩니다.
런타임 시에는 RTC가 기본 클럭 소스가 아닌 한 커널의 관점에서 오류가 발생하지 않습니다.
물론 감시 장치는 RTC를 기반으로 하는 경우가 많기 때문에 그 효율성은 예측할 수 없게 되며 이는 임베디드 시스템에서 실제 문제가 될 수 있습니다.
다시 시작할 때 시스템이 예측할 수 없는 날짜와 시간으로 시작될 수 있습니다.할 수 있는기타 로그 관리 및 cron 결정에 문제가 있을 수 있습니다.
답변3
RTC는 일반적으로 재부팅 후 시간을 유지하는 데 사용되므로 자체 배터리가 있습니다. 이를 통해 NTP가 "인터넷"과 시간을 동기화하기 전 초기 부팅 중 시간에 대한 정확한 정보를 시스템에 제공합니다. RTC가 실패하면 이전 시작 타임스탬프는 일반적으로 1970년 1월 1일 UTC이며 초기 값은 0입니다.
한 가지 참고할 점: Unix 계열 시스템은 UTC를 RTC에 저장합니다. Windows(예, Windows 내장 버전이 있음)는 RTC에 현지 시간을 저장합니다. 앞뒤로 전환하면 혼란이 생길 수 있으며, UNIX와 같은 특별한 처리 기능이 없으면 이중 부팅이 엉망이 될 수 있습니다(Linux는 IIRC를 수행하며 부팅 중 일부 커널 매개변수).