HAL (программное обеспечение)

Подсистема программного обеспечения для UNIX-подобных операционных систем
ХЭЛ
Стабильный релиз
0.5.14 / 30 ноября 2009 г. ; 14 лет назад ( 2009-11-30 )
Операционная системаLinux , FreeBSD , NetBSD , OpenSolaris , Solaris
ПлатформаЮНИКС
ТипСистемное программное обеспечение
ЛицензияGNU General Public License и Academic Free License
Веб-сайтfreedesktop.org/wiki/Software/hal/

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 год [обновлять]дистрибутивы Linux, такие как Ubuntu , [5] Debian , [6] и Fedora , а также FreeBSD, [7] и такие проекты, как KDE, [8] GNOME и X.org, находятся в процессе отказа от HAL, поскольку он «превратился в большой монолитный неподдерживаемый беспорядок». [5] Процесс в основном завершен, но некоторое использование HAL осталось — Debian squeeze (февраль 2011 г.) и Ubuntu версии 10.04 удаляют HAL из базовой системы и процесса загрузки. [9] В Linux он находится в процессе слияния с udev (основной udev, libudev и udev-extras) и существующими функциями udev и ядра. Заменой для не-Linux-систем, таких как FreeBSD, является devd.

Первоначально планировалось, что новый демон DeviceKit заменит некоторые аспекты HAL, но в марте 2009 года DeviceKit был объявлен устаревшим в пользу добавления того же кода в udev в виде пакета udev-extras , а некоторые функции теперь перемещены в сам udev .

Смотрите также

Ссылки

  1. ^ abc Pennington, Havoc (2003-07-10), Making Hardware Just Work
  2. ^ Текст лицензии на исходный код HAL, HAL лицензируется по вашему выбору: Academic Free License версии 2.1 или GNU General Public License версии 2.
  3. ^ Цойтен, Дэвид (01.11.2009), Спецификация HAL 0.5.14, freedesktop.org , получено 15.01.2017
  4. ^ "hal: doc/spec". 2010-03-16 . Получено 2017-01-15 .
  5. ^ ab Halsectomy, ubuntu.com , 2013-05-10 , получено 2017-01-15
  6. ^ "HALRemoval". debian.org . 2011-06-28 . Получено 2017-01-15 .
  7. ^ "Features/HalRemoval". Проект Fedora . 2012-01-09 . Получено 2017-01-15 .
  8. ^ «Версия 1206281: Функции базы KDE» . КДЕ . 19 декабря 2010 г. Проверено 15 января 2017 г.
  9. ^ "Технический обзор: удаление HAL". ubuntu.com. 2010-05-17 . Получено 2017-01-15 .
  • HAL — Уровень аппаратной абстракции
Взято с "https://en.wikipedia.org/w/index.php?title=HAL_(software)&oldid=1146869860"