ACPI로 이해하는 운영체제 주도 전원 관리
ACPI의 OSPM 구조와 테이블, 전원 상태, 이벤트·열·배터리 관리 방식을 정리한다.
2026-08-14 · 최초 발행 2026-01-16
BIOS의 전원 제어를 운영체제로 넘긴 인터페이스
ACPI(Advanced Configuration and Power Interface)는 운영체제가 하드웨어 전원 관리와 구성을 직접 제어할 수 있도록 설계된 개방형 산업 표준이다. Intel, Microsoft, Toshiba 등이 공동 개발했으며, 노트북 배터리 관리부터 데이터센터 에너지 효율화까지 현대 컴퓨팅 환경의 전원 관리 기반으로 쓰인다.
이 규격은 운영체제 주도 전원 관리인 OSPM(Operating System-directed configuration and Power Management)을 구현한다. 이전 APM(Advanced Power Management)은 BIOS가 전원 관리를 주도했는데, 하드웨어 구성이 다양해지고 모바일 컴퓨팅의 비중이 커지면서 표준화된 인터페이스가 필요해졌다.
최초 발표에는 Intel, Microsoft, Toshiba가 참여했고, 이후 HP와 Phoenix Technologies도 참여했다. 현재는 UEFI Forum에서 관리한다.
운영체제는 시스템의 전원 상태를 직접 다루고, 워크로드에 따라 전력을 조절하며, 통합된 전원 정책을 적용할 수 있다. ACPI는 플랫폼 독립적인 하드웨어 접근 경로와 표준 인터페이스를 제공해 여러 하드웨어를 지원하기 쉽게 만든다. 시스템 동작 중 장치 추가·제거와 하드웨어 구성 변경도 다루며, PCI 핫플러그와 배터리 교체가 이에 해당한다.
펌웨어와 운영체제가 만나는 ACPI 계층
ACPI는 애플리케이션, 운영체제, ACPI, 하드웨어 계층 사이에서 동작한다. 운영체제의 OSPM과 ACPI 드라이버는 AML 인터프리터, 테이블, 레지스터, BIOS를 통해 하드웨어의 전원 및 구성 정보를 다룬다.
펌웨어가 제공하는 ACPI 테이블에는 시스템 하드웨어 정보와 전원 관리 메소드가 담긴다.
| 테이블 | 설명 |
|---|---|
| RSDP | Root System Description Pointer |
| RSDT/XSDT | Root/Extended System Description Table |
| FADT | Fixed ACPI Description Table |
| DSDT | Differentiated System Description Table |
| SSDT | Secondary System Description Table |
| MADT | Multiple APIC Description Table |
ACPI 레지스터는 하드웨어와 직접 상호작용하는 고정된 레지스터 블록이다. PM1a/PM1b Event는 전원 관리 이벤트를, PM1a/PM1b Control은 전원 상태 제어를 담당한다. PM2 Control은 부가 전원 제어에 쓰이고, PM Timer와 GPE(General Purpose Event)도 이 블록에 포함된다.
AML(ACPI Machine Language)은 ACPI 메소드를 기술하는 바이트코드 언어다. 운영체제의 AML 인터프리터가 이를 실행한다.
// ASL (ACPI Source Language) 예시
Method (_STA, 0, NotSerialized)
{
Return (0x0F) // 장치 활성 상태 반환
}
Method (_ON, 0, NotSerialized)
{
Store (One, PWRG) // 전원 켜기
}
ACPI 네임스페이스는 시스템의 ACPI 객체를 트리로 구성한다. _SB는 시스템 버스와 장치 트리를, _PR은 프로세서 객체를, _TZ는 온도 관리 영역을 나타낸다. _GPE는 General Purpose Events이고, _SI는 시스템 지표다.
시스템과 장치, 프로세서의 전원 상태
전원 상태는 적용 범위에 따라 시스템 전체, 절전 모드, 개별 장치, 프로세서 상태로 나뉜다.
시스템 전반의 상태는 G-States로 표현한다.
| 상태 | 명칭 | 설명 |
|---|---|---|
| G0 | Working | 정상 작동 상태 |
| G1 | Sleeping | 절전 모드 (S1-S4) |
| G2 | Soft Off | 소프트웨어 종료 |
| G3 | Mechanical Off | 물리적 전원 차단 |
G1의 세부 절전 모드는 S-States로 정한다.
| 상태 | 명칭 | 특징 | 복귀 시간 |
|---|---|---|---|
| S0 | Working | 정상 작동 | - |
| S1 | Standby | CPU 정지, 컨텍스트 유지 | 즉시 |
| S2 | CPU Off | CPU 전원 차단 | 빠름 |
| S3 | Suspend to RAM | RAM 유지, 나머지 전원 차단 | 수 초 |
| S4 | Hibernate | RAM 디스크 저장, 전원 차단 | 수십 초 |
| S5 | Soft Off | 완전 종료 | 부팅 필요 |
개별 장치는 D-States로 전력과 응답성을 조절한다.
| 상태 | 설명 | 전력 | 응답 |
|---|---|---|---|
| D0 | Fully On | 최대 | 즉시 |
| D1 | Light Sleep | 감소 | 빠름 |
| D2 | Deep Sleep | 더 감소 | 느림 |
| D3hot | Off (전원 유지) | 최소 | 재초기화 |
| D3cold | Off (전원 차단) | 0 | 전원 필요 |
프로세서는 유휴 상태인 C-States와 동작 중 성능 상태인 P-States를 별도로 사용한다.
| 상태 | 설명 | 전력 절감 | 복귀 지연 |
|---|---|---|---|
| C0 | Active | 없음 | - |
| C1 | Halt | 낮음 | 즉시 |
| C2 | Stop Clock | 중간 | 수 μs |
| C3 | Deep Sleep | 높음 | 수십 μs |
| C6+ | Power Gating | 최대 | 수백 μs |
| 상태 | 특징 |
|---|---|
| P0 | 최대 성능 (최고 클럭/전압) |
| P1 | 높은 성능 |
| P2 | 중간 성능 |
| Pn | 최저 성능 (최저 클럭/전압) |
이벤트와 열 변화에 대응하는 경로
ACPI의 고정 이벤트에는 전원 버튼(PWRBTN), 슬립 버튼(SLPBTN), RTC 알람, 노트북 덮개 리드 상태 변경이 있다. GPE는 GPIO 핀 이벤트, 배터리 상태 변경, 온도 임계값 도달, 핫플러그 이벤트처럼 범용적인 이벤트를 전달한다.
이벤트가 발생하면 ACPI 레지스터가 상태 비트를 설정하고 SCI(System Control Interrupt)를 생성한다. 운영체제는 인터럽트를 받은 뒤 이벤트를 확인하고 AML 핸들러를 실행해 필요한 조치를 수행한다. SCI는 ACPI 이벤트 전달을 위한 공유 인터럽트이며, 레벨 트리거와 공유가 가능하고 운영체제의 ACPI 드라이버가 처리한다.
열 관리는 온도 센서, Thermal Zone, 냉각 장치를 연결해 처리한다. 패시브 쿨링은 CPU 클럭과 전압을 낮추고 P-State를 하향 조절한다. 소음은 없지만 성능은 저하된다. 액티브 쿨링은 팬 속도를 높여 성능을 유지하는 대신 소음이 발생한다.
_CRT는 강제 종료에 쓰는 임계 온도, _HOT는 최대 절전 진입을 위한 고온 상태, _PSV는 패시브 쿨링 시작 지점이다. _AC0~_AC9는 액티브 쿨링 단계를 나타낸다.
배터리와 외부 전원 정보
ACPI의 컨트롤 메소드 배터리(CMB)는 표준화된 배터리 인터페이스를 제공한다. _BIF와 _BIX는 배터리 정보, _BST는 배터리 상태, _BTP는 배터리 임계값, _PCL은 전원 소비자 목록을 제공한다.
| 필드 | 설명 |
|---|---|
| State | 충전 중/방전 중/정상 |
| Present Rate | 현재 충/방전 속도 |
| Remaining Capacity | 잔여 용량 |
| Present Voltage | 현재 전압 |
AC 어댑터 상태는 _PSR로 확인하며, 이는 AC 또는 배터리 전원 공급 상태를 나타낸다. _PCL은 여기에서도 전원 소비자 목록을 제공한다.
운영체제가 노출하는 ACPI 기능
Windows는 Windows 2000부터 ACPI를 완전 지원하며, 전원 옵션 제어판, powercfg 명령어, acpi.sys 드라이버를 제공한다.
Linux는 2.6 커널부터 ACPI 서브시스템을 지원한다. /sys/power, /sys/class/thermal, acpid 데몬, acpi와 acpitool 도구가 관련 인터페이스다.
macOS는 IOACPIPlatformFamily와 pmset 명령어를 통해 전원 관리를 통합한다.
전력 정책이 적용되는 환경
데이터센터에서는 유휴 서버를 S3/S4 상태로 전환하고, CPU C-State를 적극적으로 활용하며, Power Capping으로 전력 상한을 설정할 수 있다. 워크로드에 따라 P-State를 조절하고 DVFS(Dynamic Voltage Frequency Scaling)와 전력 예산 관리를 적용한다.
노트북에서는 화면을 닫을 때 S3에 진입시키고, 일정 시간 유휴 상태에서는 자동 절전을 사용하며, 배터리가 부족하면 최대 절전으로 전환할 수 있다. 배터리 모드에서 저전력 P-State를 선택하고 화면 밝기를 자동 조절하거나 주변 장치를 D3로 전환하는 방식도 포함된다.
임베디드 시스템과 저전력 IoT 장치는 깊은 슬립 모드, 이벤트 기반 깨우기, 전력 최적화 설계를 활용한다.