ACPI (Advanced Configuration and Power Interface) je v informatice označení pro otevřenou specifikaci pro komunikaci jádra operačního systému s hardwarem a naopak, abstrakci funkcí hardwaru a též nahrazení dřívější technologie Advanced Power Management (APM). Jednou z podmnožin funkcí je správa napájení – řízení spotřeby u celé řady mobilních a stolních počítačů, serverů a periferních zařízení.

Historie

Standard ACPI byl vyvinut za vzájemné spolupráce společností Intel, Microsoft a Toshiba v roce 1996. Poslední zveřejněná verze ACPI specifikace verze 6.3 byla publikována UEFI Fórem na konci ledna 2019.

Kontroverze

Někteří softwaroví vývojáři mají k ACPI výhrady, protože standard vyžaduje, aby byl bajtkód z externího (a tedy nedůvěryhodného) zdroje spuštěn s neomezenými oprávněními.[1] Linus Torvalds, tvůrce jádra Linuxu označil ACPI jako „kompletně katastrofální návrh ve všech směrech“ (anglicky a complete design disaster in every way) ve spojení se svým pohledem „moderní PC jsou hrozná“ (anglicky modern PCs are horrible).[2]

Implementace

Specifikace byla navržena multiplatformně jak pro 32bitové procesory architektury x86, tak pro 64bitový procesor Itanium. Není omezena jen na notebooky nebo stolní počítače, její součástí jsou i funkce pro víceprocesorové počítače (což APM vůbec neřešilo). Součástí ACPI specifikace je i programovací jazyk ASL (ACPI Source Language), jímž je možno programovat obsluhy událostí (event handler) jako je například probuzení počítače za 30 minut a podobně. ASL je překládán pomocí kompilátoru do bytekódu.

Od roku 2000 většina počítačů podporuje ACPI. Z počátku neexistovala referenční implementace, podle které by mohla být práce tvůrců BIOSu kontrolována.

Microsoft Windows

Ve Windows 2000 byla obsažena první implementace, která částečně ACPI implementovala, avšak ne zcela podle normy. Výrobci BIOSů pak vytvářeli vlastní část implementace takovou, aby „fungovala s Windows“, což způsobovalo potíže v alternativních systémech.[3] Rozšíření z poslední verze ACPI 4.0 je zčásti začleněna do Windows 7 a Windows Server 2008 R2.[4]

Linux

V Linuxu byla první implementací verze vyvíjená uvnitř firmy SUSE, jejímž cílem bylo se striktně držet specifikace. Implementace v BIOSech počítačů však obsahují mnoho chyb, a proto tento přístup neměl příliš úspěch. Následná implementace, která byla zařazena do jádra veze 2.4.x a je obsažena i v jádrech verze 2.6, obsahuje pro tyto případy spoustu workaroundů a výjimek pro jednotlivé verze BIOSů.[5] Plně je podporováno ACPI verze 2.0.[6]

Přítomnost ACPI a její podpory lze po startu systému zjistit pomocí níže uvedeného příkazu. Pokud jsou vypsány nějaké řádky o ACPI, lze v nich vysledovat i stav ACPI (zjištěné problémy i doporučení). Na příkazovém řádku zadejte:

dmesg | grep ACPI

ACPI tabulky

Informace o systému jsou zapisovány do samostatných ACPI tabulek:

DSDT tabulka je jedna z nejdůležitějších a největších tabulek ACPI. Je součástí BIOSu a operační systém ji načítá při bootování. Zpravidla může DSDT obsahovat chyby (výrobce hlavně zajímá, aby vše fungovalo pod MS Windows).

ACPI stavy


Reference

  1. CORBET, Jonathan. Kernel development [online]. LWN.net, 2001-07-04 [cit. 2010-07-02]. Dostupné online. (anglicky) 
  2. SEARLS, Doc. Linus & the Lunatics, Part II [online]. Linux Journal, 2003-11-25 [cit. 2010-01-13]. Dostupné online. (anglicky) 
  3. – Troubleshooting ACPI
  4. – Intel Developer Forum (Fall, 2009). www.acpi.info [online]. [cit. 2011-01-03]. Dostupné v archivu pořízeném dne 2010-12-11. 
  5. – ACPI HOWTO (zastaralé). www.columbia.edu [online]. [cit. 2011-01-03]. Dostupné v archivu pořízeném dne 2010-12-29. 
  6. – ACPI guideline for vendorss (2008)

Externí odkazy