Як операційна система може знати рівень заряду акумулятора?


34

Навіть якщо ми видалимо ОС за замовчуванням і встановимо нову, вона може взаємодіяти з акумулятором. Чи є якісь драйвери для цього? Як це працює?

Відповіді:


33

Операційна система взаємодіє з вбудованим програмним забезпеченням вбудованого контролера, який є частиною розширеного інтерфейсу конфігурації та живлення (ACPI).

Вікіпедія визначає це як:

На комп'ютері інтерфейс розширеної конфігурації та живлення (ACPI) забезпечує відкритий стандарт, який операційні системи можуть використовувати для виявлення та налаштування компонентів комп'ютерних апаратних засобів, для керування живленням (наприклад, ввімкнення невикористаних компонентів у режим сну та здійснення моніторингу стану . Вперше випущений у грудні 1996 року, ACPI має на меті замінити розширене управління живленням (APM), специфікацію мультипроцесора та специфікацію BIOS (PnP) Plug and Play. [1] ACPI приносить управління живленням під управління операційною системою, на відміну від попередньої системи, орієнтованої на BIOS, яка для визначення політики управління та налаштування енергії спиралася на певну платформу.

Внутрішньо ACPI рекламує наявні компоненти та їх функції в ядрі операційної системи, використовуючи списки інструкцій ("методи"), що надаються через програмне забезпечення системи (Unified Extensible Firmware Interface (UEFI) або BIOS), яке ядро ​​розбирає. Потім ACPI виконує потрібні операції (такі як ініціалізація апаратних компонентів) за допомогою вбудованої мінімальної віртуальної машини.

Потім відповідь полягає в тому, що схема або мікросхема вбудована в материнську плату, яка сама містить мікроопераційну систему, яка робить доступними деякі сервіси через програмне забезпечення комп'ютера - UEFI або BIOS. Він контролює багато аспектів управління живленням та пристроями.

Операційна система комп'ютера має системний драйвер, який призначений для взаємодії з ACPI. Після активації ACPI він приймає виключний контроль над усіма аспектами управління живленням та конфігурацією пристрою.

У багатьох аспектах ACPI - це операційна система, що стоїть за вашою операційною системою, за винятком того, що вона постачається з материнською платою і не знаходиться під вашим контролем. Були голоси, що пов'язують його з троянським конем і називають це ризиком для безпеки. Він може бути відключений, але деякі комп'ютери можуть не завантажуватися без нього, і тоді розширене управління живленням у будь-якому випадку вимкнено.

Більш детальну інформацію про його використання в Windows див. У статті Проектування апаратури підсистеми акумулятора та живлення .


1
Можливо, я помиляюся, але це здається, що опис останнього абзацу повністю змішує ACPI з SMM та / або з ME / AMT Intel . ACPI - це здебільшого статична структура даних з невеликими обсягами байтових кодів, яку повинна інтерпретувати сама ОС, тоді як ME - це фактична система.
grawity

1
@grawity: Не думай так. Ви можете знайти подібну дискусію в статті Вікіпедії ACPI.
harrymc

1
Я не бачу багато обговорень там, окрім кількох цитат з одного блогу Shuttleworth, і, прочитавши обидві сторінки, я не переконаний у найменшій мірі - мені здається, що він просто збиває все, що йде з системою під "ACPI" ім'я, будь то BIOS або Intel ME або будь-яке інше. Наскільки я знаю, з усього сміття, яке постачається із сучасною системою, ACPI - це, мабуть, єдина частина, яка не працює самостійно, і, звичайно, не під ОС.
grawity

2
@grawity ACPI також включає інтерфейс виконання коду програмного забезпечення на рівні програмного забезпечення, однак насправді так відбувається багато взаємодії з програмним забезпеченням. У деяких системах це навіть використовує SMM для фактичного виконання коду, хоча це, на щастя, стає все рідше і рідше.
Остін Хеммельгарн

@grawity: Так, ACPI не робить нічого в тому сенсі, що це лише контролер. UEFI / BIOS аналогічно управляє пристроями і розміщується вище в апаратній ієрархії, і одним з них є ACPI. Функції екстерналізуються на кожному рівні, а також стають все більш узагальненими з кожним рівнем. Програмне забезпечення, таке як операційні системи, розроблене приблизно за однаковим підходом рівнів узагальнення, тому люди атакують складні проблеми.
harrymc

57

Як доповнення до іншої відповіді, як програмне забезпечення, що працює на комп’ютері, знає, який рівень заряду акумулятора? Він запитує батарею.

Більшість батарей для ноутбуків - це розумні батареї, які мають власний мікроконтролер або «паливний датчик» ASIC, з яким хост може спілкуватися через SMBus. Люди реверсували кілька прикладів.

SMBus може або не може бути безпосередньо підданий дії операційної системи таким чином, що дозволяє адміністратору безпосередньо запитувати його. Існують різні програми, такі як OpenHardwareMonitor або Speccy або lm-датчики, які можуть допитати шину, щоб дізнатися про обладнання.


чудове пояснення, щоб зрозуміти основне поняття взагалі! Хоча я б оголосив лапки навколо слова "запитує".
Альбін

З моєю відповіддю немає конфлікту: SMBus - це компонент, яким керує ACPI для мобільних комп’ютерів, в яких він існує.
harrymc

1
Цей розумний інтерфейс акумулятора також можна відкрити за допомогою більш стандартних засобів, таких як USB. Наприклад, у багатьох ДБЖ є порт USB, який підключається до комп'ютера і повідомляє, скільки енергії залишилось, і відображає її так, як робить ноутбук.
TheHansans

2
@TheHansinator Я б заперечував, що SMBus є стандартним засобом для спілкування зі смарт-акумулятором. Практично всі телефони та ноутбуки використовують його, що набагато більше систем, ніж зовнішні пристрої ДБЖ.
Остін Хеммельгарн

@AustinHemmelgarn Правда. Можливо, краще слово "звичайне", оскільки система - це більш-менш абстракція ОС, яку можуть використовувати пристрої, окрім вбудованих батарей.
TheHansans

2

Більш загально, всі комп'ютерні мікросхеми мають документацію, яка повідомляє дизайнерам та програмістам, що вони роблять, і як їх налаштувати для цього. Доступ до цих чіпів на низькому рівні можна зробити, читаючи та записуючи безпосередньо в регістри чіпа.

Більш складні мікросхеми можуть поставлятися з програмною програмою, яка називається "драйвер", яка дозволяє доступ високого рівня до операційної системи або навіть інших програм. Наприклад, ваш смартфон має інтерфейс прикладного програмування (API), який дозволяє отримати доступ до більшої частини апаратури телефону, GPS, акселерометра, акумулятора, камери тощо. Коли ви пишете "Додаток", ви можете отримати доступ до цих апаратних пристроїв за допомогою API так само, як може операційна система (хоча ОС зазвичай має більш широкий доступ, ніж програма, що працює в "просторі користувача".)

Ці інтерфейси дуже чітко визначені, тому коли ви здійснюєте виклик функції на апаратний чіп, він буде відповідати запитуваною інформацією. Мікросхема контролера акумулятора - лише один із прикладів такої загальної інфраструктури.

Хто пише, код операційної системи отримує документацію для мікросхеми і записує програмне забезпечення для зв'язку з мікросхемою та отримання потрібної інформації.

Тож наступного разу, коли ви завантажите "драйвер" (або це робиться автоматично) для зовнішнього жорсткого диска, USB-накопичувача чи чогось іншого, ви зрозумієте трохи більше про те, як все відбувається "під капотом".

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.