Как операционная система может узнать уровень заряда батареи?

34

Даже если мы удалим стандартную ОС и установим новую, она может взаимодействовать с батареей. Есть ли драйверы для этого? Как это работает?

зеленый
источник

Ответы:

33

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

Википедия определяет это как:

В компьютере расширенный интерфейс конфигурации и питания (ACPI) предоставляет открытый стандарт, который операционные системы могут использовать для обнаружения и настройки компонентов аппаратного обеспечения компьютера, для управления питанием, например, путем перевода неиспользуемых компонентов в спящий режим и мониторинга состояния. , Впервые выпущенный в декабре 1996 года, ACPI призван заменить Advanced Power Management (APM), спецификацию мультипроцессора и спецификацию Plug and Play BIOS (PnP). [1] ACPI обеспечивает управление питанием под управлением операционной системы, в отличие от предыдущей BIOS-ориентированной системы, которая использовала встроенное ПО для платформы для определения политик управления питанием и конфигурации.

Внутренне ACPI объявляет о доступных компонентах и ​​их функциях ядру операционной системы, используя списки команд («методы»), предоставляемые через встроенное ПО системы (UEFI) или BIOS, которые анализирует ядро. Затем ACPI выполняет нужные операции (например, инициализацию аппаратных компонентов), используя встроенную минимальную виртуальную машину.

Тогда ответ заключается в том, что в материнскую плату встроена микросхема или микросхема, которая сама содержит микро операционную систему, которая делает доступными некоторые сервисы через прошивку компьютера - UEFI или BIOS. Он контролирует многие аспекты управления питанием и устройствами.

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

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

Подробнее о его использовании в Windows см. В статье « Аппаратное обеспечение батареи и питания» .

harrymc
источник
1
Я могу ошибаться, но похоже, что описание в последнем абзаце полностью смешивает ACPI с SMM и / или с Intel / ME Intel . ACPI - это в основном статическая структура данных с небольшим количеством байт-кода, которую сама ОС должна интерпретировать, тогда как ME - это реальная система.
grawity
1
@ Grawity: Не думай так. Вы можете найти аналогичное обсуждение в статье ACPI Wikipedia.
Harrymc
1
Я не вижу там большого обсуждения, за исключением нескольких цитат из одного поста в одном блоге Шаттлворта, и после прочтения обеих страниц я ни в чем не убежден - мне кажется, что он просто смешивает все, что идет с системой под Имя "ACPI", будь то BIOS или Intel ME или что-то еще. Насколько я знаю, из всего мусора, который идет с современной системой, ACPI, вероятно, единственная часть, которая не работает сама по себе и, конечно, не под ОС.
grawity
2
@grawity ACPI также включает в себя интерфейс выполнения кода уровня встроенного программного обеспечения, именно так происходит много взаимодействий встроенного программного обеспечения с его участием. В некоторых системах это даже использует SMM для фактического выполнения кода, хотя, к счастью, это становится все менее и менее распространенным.
Остин Хеммельгарн
@ Grawity: Да, ACPI ничего не делает в том смысле, что это всего лишь контроллер. UEFI / BIOS аналогичным образом управляет устройствами и находится выше в аппаратной иерархии, и одним из них является ACPI. Функции экстернализуются на каждом уровне, а также становятся все более обобщенными с каждым уровнем. Программное обеспечение, такое как операционные системы, спроектировано по принципу обобщения, как люди решают сложные проблемы.
Harrymc
57

В дополнение к другому ответу, как программное обеспечение, работающее на компьютере, узнает, каков уровень заряда батареи? Это спрашивает батарею.

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

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

pjc50
источник
отличное объяснение, чтобы понять основную концепцию в целом! Хотя я бы поставил кавычки вокруг слова «спрашивает».
Альбин
Мой ответ не противоречит: SMBus - это компонент, который управляется ACPI для мобильных компьютеров, в которых он существует.
harrymc
1
Этот интеллектуальный интерфейс батареи также может быть открыт с помощью более стандартных средств, таких как USB. Например, у многих ИБП есть порт USB, который при подключении к компьютеру сообщает компьютеру, сколько осталось энергии, и отображает его так же, как ноутбук.
TheHansinator
2
@TheHansinator Я бы сказал, что SMBus - это стандартное средство связи с умной батареей. Его используют почти все телефоны и ноутбуки, что намного больше систем, чем использование внешних устройств ИБП.
Остин Хеммельгарн
@AustinHemmelgarn Правда. Возможно, лучшим словом будет «обычный» в том смысле, что система является более или менее абстракцией ОС, которую могут использовать устройства, помимо встроенных батарей.
TheHansinator
2

В целом, все компьютерные чипы имеют документацию, которая сообщает дизайнерам и программистам, что они делают и как их настроить для этого. Низкий уровень доступа к этим чипам может быть сделан путем чтения и записи непосредственно в регистры чипа.

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

Эти интерфейсы очень хорошо определены, поэтому, когда вы выполняете вызов функции для аппаратного чипа, он отвечает запрошенной информацией. Микросхема контроллера батареи является лишь одним из примеров этой общей инфраструктуры.

Кто бы ни писал код операционной системы, он получает документацию для чипа и пишет программное обеспечение для связи с чипом и извлечения информации, которую он желает.

Поэтому в следующий раз, когда вы загрузите «драйвер» (или это будет сделано автоматически) для внешнего жесткого диска, флэш-накопителя USB или чего-то еще, вы поймете немного больше о том, как все происходит «под капотом».

CramerTV
источник