RTC란?
실시간 시계(RTC)는 컴퓨터 마더보드에 있는 전용 하드웨어 칩으로 현재 시간을 추적합니다. CPU 클록(단순히 사이클만 세는)과 달리 RTC는 달력 시간(연, 월, 일, 시, 분, 초)을 유지합니다. 소형 코인 셀 배터리(일반적으로 CR2032)로 구동되어 컴퓨터가 꺼져 있거나 몇 달간 보관 중에도 작동합니다.
RTC 작동 원리
RTC는 32.768kHz 수정 발진기를 포함합니다 — 이 주파수는 2^15이므로 15비트 이진 카운터로 쉽게 1Hz로 분주할 수 있어 선택된 것입니다. 칩은 이후 초, 분, 시, 일, 월, 년에 대한 BCD 레지스터를 증가시킵니다.
# Linux에서 RTC 읽기
hwclock --show # RTC 시간 표시
hwclock --show --utc # UTC로 표시 (권장)
# 시스템 시계에서 RTC로 동기화
hwclock --systohc # 시스템 → RTC
hwclock --hctosys # RTC → 시스템
RTC의 UTC vs 현지 시간
듀얼 부팅 문제의 흔한 원인: Windows는 기본적으로 현지 시간을 RTC에 저장하고, Linux는 RTC가 UTC로 설정되어 있다고 가정합니다. 권장 해결책: 모든 곳에서 RTC를 UTC로 설정하고 각 OS가 소프트웨어에서 현지 시간으로 변환하도록 합니다.
RTC 드리프트와 CMOS 배터리
RTC 수정은 드리프트합니다 — 일반적으로 10~100ppm, 즉 하루에 약 1~9초. NTP 보정 없이 수개월이 지나면 RTC가 몇 시간씩 틀릴 수 있습니다. CMOS 배터리가 방전되면(일반 수명: 5~10년) RTC는 시간을 잃고 기본 날짜(주로 2000년 1월 1일)로 초기화됩니다.
임베디드 시스템의 RTC
마이크로컨트롤러(Arduino, Raspberry Pi Pico)는 일반적으로 내장 RTC가 없습니다. 일반적인 외부 RTC 칩:
- DS3231: 고정밀 RTC, ±2ppm, I²C 인터페이스, 온도 보상 포함
- DS1307: 기본 RTC, I²C, 온도 보상 없음
- PCF8563: 저전력 RTC, IoT 기기에서 인기
부팅 시간 순서
- 전원 켜짐 → BIOS/UEFI가 초기 시간을 RTC에서 읽음
- OS 부팅 →
hwclock으로 RTC를 읽어 시스템 시계 설정 - 네트워크 연결 → NTP 클라이언트가 인터넷에서 시스템 시계 동기화
- NTP가 선택적으로 수정된 시간을 RTC에 다시 씀