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

8399
green

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

34

3 ответа на вопрос

57
pjc50

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

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

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

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

Операционная система взаимодействует с микропрограммой встроенного контроллера, который является частью интерфейса расширенной конфигурации и питания (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 см. В статье « Аппаратное обеспечение батареи и питания» .

Я могу ошибаться, но похоже, что описание последнего абзаца полностью путает ACPI с [SMM] (https://en.wikipedia.org/wiki/System_Management_Mode) и / или с Intel [ME / AMT] (https: // en .wikipedia.org / вики / Intel_Active_Management_Technology). ACPI - это в основном статическая структура данных с небольшим количеством байт-кода, которую сама ОС должна интерпретировать, тогда как ME - это реальная система. grawity 5 лет назад 1
@ Grawity: Не думай так. Вы можете найти аналогичное обсуждение в статье ACPI Википедии. harrymc 5 лет назад 1
Я не вижу там большого обсуждения, кроме нескольких цитат из одного поста в одном блоге Шаттлворта, и после прочтения обеих страниц я не уверен ни в чем - мне кажется, что он просто смешивает _everything_, что идет с системой под Имя "ACPI", будь то BIOS или Intel ME или что-то еще. Насколько я знаю, из всего мусора, который идет с современной системой, ACPI, вероятно, является единственной частью, которая не запускается сама по себе и, конечно, не под ОС. grawity 5 лет назад 1
@grawity ACPI также включает в себя интерфейс выполнения кода уровня встроенного программного обеспечения, именно так происходит много взаимодействий встроенного программного обеспечения с его участием. В некоторых системах это даже использует SMM для фактического выполнения кода, хотя, к счастью, это становится все менее и менее распространенным. Austin Hemmelgarn 5 лет назад 2
@ Grawity: Да, ACPI ничего не делает в том смысле, что это всего лишь контроллер. UEFI / BIOS аналогичным образом управляет устройствами и находится выше в аппаратной иерархии, и одним из них является ACPI. Функции экстернализуются на каждом уровне, а также становятся все более обобщенными с каждым уровнем. Программное обеспечение, такое как операционные системы, спроектировано по принципу обобщения, как люди решают сложные проблемы. harrymc 5 лет назад 0
Ответ здесь самый правильный. Acpi, тем не менее, состоит в основном из справочной таблицы. Gravity сбивает с толку дискуссию об отвращении основателя Linux к uefi, а не к acpi. Acpi - логичное решение, а UEFI - очень раздутый биос. Кроме того, uefi по существу делает Linux несколько бесполезным, что мотивирует Линуса быть против него. Acpi и UEFI абстрактно не связаны с Intel Me. Intel me - это безопасный механизм исполнения, который взаимодействует со всеми аспектами прошивки, которая включает в себя BIOS, UEFI или OS. marshal craft 5 лет назад 0
Чтобы быть кратким (это все гораздо больше, чем это), Intel проверяет все, что выполняется процессором. Кроме того, он включает в себя микрокод, который обновляется Intel удаленно. Микрокод запускается первым. Процессор после и во время запуска моего микрокода, сначала не загружает ни один код Intel из spi flash. Флэш имеет раздел дескриптора флэш-памяти, аналогичный оглавлению. Здесь разработчики прошивки могут управлять структурой вспышки. Он содержит и должен содержать раздел безопасного выполнения, который обычно должен проверять, действительно ли микропрограмма подписана доверенной стороной. marshal craft 5 лет назад 0
Подписи и т. Д., Механизмы подписи хранятся в защищенных регистрах, которые имеют предохранители, поэтому они становятся только для чтения. Apple, в частности, не удосужилась настроить их правильно, позволяя удаленным пользователям изменять и использовать эти функции злонамеренно, хотя, как сообщалось, это была вина, просто Apple не удосужилась их настроить. Во всяком случае, большая часть этого недокументирована в открытом доступе. Intel выбирает oems и предоставляет им документацию. Кроме того, механизм безопасного выполнения может запускать Java-скрипты, работать с беспроводными сетями и даже работать, когда компьютер выключен. marshal craft 5 лет назад 0
Acpi и uefi - два основных документа, определяющих необходимую прошивку для запуска устройства Windows. Оба очень хорошо документированы и находятся в свободном доступе. Intel является основным разработчиком документации UEFI и самой прошивки UEFI. Microsoft несет главную ответственность за разработку Acpi. Как таковое, это описывает кое-что, к чему они относятся больше. Как только Windows или Linux запускается как bootliader (как скрипт uefi), ОС берет на себя эту точку, и процессорные состояния переключаются, и выполняется uefi. Вот почему UEFI глупо. marshal craft 5 лет назад 0
Речь шла об очень продвинутом BIOS, который в основном является автономной операционной системой, способной запускать переносимые исполняемые файлы. Книги Chrome в основном работают на chrome.exe. Вся эта сложность - просто проверить оборудование и загрузить ОС, а затем ничего не делать до следующей перезагрузки. marshal craft 5 лет назад 0
Acpi, с другой стороны, используется обязательными драйверами uefi и os. Uefi теперь имеет и требует драйверов, однако использование драйверов uefi для Windows снизит производительность. Windows действительно нуждается в драйверах, специально созданных для этой цели, но может это сделать Acpi состоит в основном из таблицы и aml, которые являются в основном аппаратно-зависимой сборкой. marshal craft 5 лет назад 0
Что более важно, драйвером root в Windows является ACPI.SYS, все остальные драйверы являются дочерними для этого драйвера. Этот драйвер является фундаментальной частью структуры драйвера Windows Kernal. Например, шина pci будет драйвером шины и загружена acpi.sys marshal craft 5 лет назад 0
@marshalcraft: нигде в моих сообщениях я не упоминал Линуса Торвальдса (создателя Linux). Марк Шаттлворт является основателем дистрибутива Ubuntu Linux, но сам не создавал Linux. grawity 5 лет назад 0
Лучше задать вопрос: где в какой-то момент этого обсуждения имеет значение, кто разработал Linux? Это тоже не здесь, больше там. Это про acpi. Линус прежде всего публично выразил озабоченность по поводу UEFI. Причина, по которой я высказал это, состоит в том, что есть много причин возражать против использования uefi. Acpi, с другой стороны, служит более доказуемой цели. Но оба связаны, и UEFI требует ACPI. marshal craft 5 лет назад 0
Я не пытаюсь никого дискредитировать, но предоставлю более точное описание. Я считаю, что это ключевой вопрос, который влияет на человечество. Никто не может усомниться в роли, которую Intel сыграла в человеческом обществе. В настоящее время интелс лечения его TXE (формально я) является критической проблемой. Uefi и acpi фундаментально связаны между собой, однако основной проблемой является механизм надежного выполнения. marshal craft 5 лет назад 0
У Txe есть несколько сомнительных этических проблем. Одним из них является стремление использовать собственность клиентов без их согласия, не говоря уже о знаниях. Но более насущной проблемой является искусственный барьер для входа в oem разработчиков. Кульминацией этого является техническая поддержка. С поддельным свободным рынком, поддельными инновациями, просто гигантский голливудский набор. Где только пико процентов населения имеют реальные возможности для инноваций и играют определенную роль в обществе. marshal craft 5 лет назад 0
Не сомневайтесь, что это всего лишь фальшивый голливудский сет, тщательно продуманная монополистическая игра, в которой результат тщательно рассчитывается по принципу априори. Однако единственное реальное решение - это снижение затрат на разработку полупроводников, которое может быть достигнуто только благодаря большому повышению осведомленности общественности о химическом / физическом мире вокруг них и большему пониманию возможностей их собственного разума. marshal craft 5 лет назад 0
2
CramerTV

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

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

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

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

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