실시간 시계(RTC) 하드웨어: 컴퓨터가 시간을 유지하는 방법

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 기기에서 인기

부팅 시간 순서

  1. 전원 켜짐 → BIOS/UEFI가 초기 시간을 RTC에서 읽음
  2. OS 부팅 → hwclock으로 RTC를 읽어 시스템 시계 설정
  3. 네트워크 연결 → NTP 클라이언트가 인터넷에서 시스템 시계 동기화
  4. NTP가 선택적으로 수정된 시간을 RTC에 다시 씀