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