HAL ( Hardware Abstraction Layer или, скорее, Hardware Annotation Library ) - это программная подсистема для UNIX-подобных операционных систем, обеспечивающая абстракцию оборудования .
Стабильный выпуск | 0.5.14 / 30 ноября 2009 г . |
---|---|
Операционная система | Linux , FreeBSD , NetBSD , OpenSolaris , Solaris |
Платформа | UNIX |
Тип | Программное обеспечение |
Лицензия | Стандартная общественная лицензия GNU и бесплатная академическая лицензия |
Веб-сайт | freedesktop |
HAL теперь устарел в большинстве дистрибутивов Linux и во FreeBSD. Функциональные возможности объединяются в udev для Linux с 2008–2010 гг. И devd для FreeBSD. [ необходима цитата ] Раньше HAL строился поверх udev. [ необходима цитата ]
Некоторые другие ОС, у которых нет альтернативы, например udev или devd, по-прежнему используют HAL.
Цель уровня абстракции оборудования состояла в том, чтобы позволить настольным приложениям обнаруживать и использовать оборудование хост-системы через простой, переносимый и абстрактный API , независимо от типа базового оборудования. [1]
HAL для ОС Linux изначально задумывался Havoc Pennington . Он стал проектом freedesktop.org и был ключевой частью программного стека сред рабочего стола GNOME и KDE . Это бесплатное программное обеспечение , двойное лицензирование как под GNU General Public License и Academic Free License . [2]
HAL не связан с концепцией HAL ядра Windows NT , которые обрабатывают некоторые базовые функции ядра, зависящие от платформы, такие как маршрутизация прерываний.
Обоснование
Традиционно ядро операционной системы отвечало за предоставление абстрактного интерфейса аппаратному обеспечению, на котором работает система. Приложения использовали интерфейс системного вызова или выполняли файловый ввод-вывод на узлах устройства для связи с оборудованием через эти абстракции. Этого было достаточно для простого оборудования ранних настольных компьютеров.
Компьютерное оборудование, однако, усложнилось, а абстракции, предоставляемые ядрами Unix, не успевали за растущим числом типов устройств и периферийных устройств, которые теперь распространены как на серверных, так и на настольных компьютерах. Большинство современных шин также поддерживают горячее подключение и могут иметь нетривиальную топологию . В результате устройства обнаруживаются или меняют состояние способами, которые трудно отследить через интерфейс системных вызовов или IPC Unix. Сложность этого заставляет авторов приложений заново реализовывать логику поддержки оборудования. [1]
Некоторым устройствам также требуются привилегированные вспомогательные программы для их подготовки к использованию. Их часто приходится вызывать способами, которые может быть неудобно выразить с помощью модели разрешений Unix (например, разрешая пользователям подключаться к беспроводным сетям только в том случае, если они вошли в видеопанель). [1] Авторы приложений прибегают к использованию двоичных файлов setuid или запускают сервисные демоны, чтобы обеспечить собственный контроль доступа и разделение привилегий, каждый раз потенциально создавая дыры в безопасности.
Дизайн
HAL - это единственный демон, отвечающий за обнаружение, перечисление и посредничество доступа к большей части оборудования на главном компьютере. Приложения взаимодействуют с HAL через механизм IPC D-Bus , который абстрагирует оборудование, стоящее за механизмом объектно-ориентированного RPC .
Каждое логическое аппаратное устройство представлено как объект D-Bus, а его адрес шины используется как уникальный идентификатор. Устройства включают в себя такие абстракции, как разделы диска и видимые беспроводные сети. Функциональность устройства предоставляется через интерфейсы D-Bus , а доступ к его состоянию осуществляется через свойства , набор пар ключ-значение.
HAL транслирует аппаратные события как сигналы на эти объекты; приложения могут прослушивать сигналы и реагировать на аппаратные события, которые они обозначают - такие, как включение цифровой камеры , вращение оптического диска или закрытие крышки портативного компьютера. [3] [4]
Внедрения и устаревание
В Linux HAL использует /sys
( виртуальную файловую систему для систем Linux ) для обнаружения оборудования и прослушивания событий горячего подключения ядра . Некоторые дистрибутивы Linux также предоставляют правило udev, позволяющее демону udev уведомлять HAL всякий раз, когда появляются новые узлы устройства.
Устарело
По состоянию на 2011 г.[Обновить], Такие дистрибутивы Linux, как Ubuntu , [5] Debian , [6] и Fedora, а также на FreeBSD, [7] и такие проекты, как KDE, [8] GNOME и X.org , прекращают поддержку HAL, поскольку он «стал большой монолитный непослушный беспорядок ». [5] Процесс в основном завершен, но часть использования HAL остается - сжатие Debian (февраль 2011 г.) и Ubuntu версии 10.04 удаляют HAL из базовой системы и процесса загрузки. [9] В Linux он находится в процессе объединения с udev (main udev, libudev и udev-extras) и существующими функциями udev и ядра. Заменой для систем, отличных от Linux, таких как FreeBSD, является devd.
Первоначально планировалось, что новый демон DeviceKit заменит определенные аспекты HAL, но в марте 2009 года DeviceKit был объявлен устаревшим в пользу добавления того же кода в udev, что и пакет udev-extras , а некоторые функции теперь перемещены в udev собственно.
Смотрите также
- devfsd
- Евдев
- udev
- UPower
Рекомендации
- ^ a b c Пеннингтон, Havoc (10 июля 2003 г.), " Заставляя оборудование просто работать"
- ^ Текст лицензии на исходный код
HAL
,HAL предоставляется вам по вашему выбору: Academic Free License версии 2.1 или GNU General Public License версии 2.
- ^ Цойтен, Дэвид (2009-11-01), спецификация HAL 0.5.14 , freedesktop.org , получено 15 января 2017 г. CS1 maint: обескураженный параметр ( ссылка )
- ^ "Хэл: документ / спецификация" . 2010-03-16 . Проверено 15 января 2017 . CS1 maint: обескураженный параметр ( ссылка )
- ^ а б Halsectomy , ubuntu.com , 10 мая 2013 г. , данные получены 15 января 2017 г. CS1 maint: обескураженный параметр ( ссылка )
- ^ «HALRemoval» . debian.org . 2011-06-28 . Проверено 15 января 2017 . CS1 maint: обескураженный параметр ( ссылка )
- ^ «Особенности / HalRemoval» . Проект Fedora . 2012-01-09 . Проверено 15 января 2017 . CS1 maint: обескураженный параметр ( ссылка )
- ^ «Версия 1206281: Возможности в базе KDE» . KDE . 2010-12-19 . Проверено 15 января 2017 . CS1 maint: обескураженный параметр ( ссылка )
- ^ «Технический обзор: удаление HAL» . ubuntu.com. 2010-05-17 . Проверено 15 января 2017 . CS1 maint: обескураженный параметр ( ссылка )
Внешние ссылки
- HAL - уровень аппаратной абстракции