Слой аппаратных абстракций

Слой аппаратных абстракций

Hardware Abstraction Layer (HAL, Слой аппаратных абстракций) — слой абстрагирования, реализованный в программном обеспечении, находящийся между физическим уровнем аппаратного обеспечения и программным обеспечением, запускаемом на этом компьютере. HAL предназначен для скрытия различий в аппаратном обеспечении от основной части ядра операционной системы, таким образом чтобы большая часть кода, работающая в режиме ядра не нуждалась в изменении при её запуске на системах с различным аппаратным обеспечением. На персональных компьютерах HAL, по существу, может рассматриваться как драйвер материнской платы, позволяющий взаимодействовать инструкциям высокоуровневых языков программирования с низкоуровневыми компонентами, такими как аппаратное обеспечение.

В операционных системах семейства Windows NT HAL является неотъемлемой частью кода, исполняемого в режиме ядра, находится в отдельном загрузочном модуле, загружаемом совместно с ядром.[1] Это обеспечивает возможность использования одного и того же загрузочного модуля собственно ядра ОС Windows NT на ряде систем с различными архитектурами шин ввода/вывода, управления прерываниями и таймерами. К примеру, рабочие станции, основанные на SGI Intel x86 (англ.)русск., были не совместимы с IBM PC-совместимыми рабочими станциями, но благодаря HAL Windows NT мог запускаться на них. Аналогичным образом одно и то же ядро Windows NT используется и на современных системах с контроллером прерываний APIC, так и на устаревших системах без поддержки APIC.

BSD, Mac OS X, Linux, CP/M, MS-DOS, Solaris и некоторые другие портируемые ОС также имеют HAL, несмотря на то, что он не разрабатывался явно для выполнения описанных выше функций. Некоторые системы, такие как Linux, имеют возможность вставлять подобный слой, к примеру Adeos (англ.)русск., во время работы. Ядро операционной системы NetBSD широко известно наличием чистого слоя абстрагирования от аппаратного обеспечения (HAL), что позволяет ему быть высоко-портируемым. Частью этой системы являются uvm(9)[2]/pmap(9)[3], bus_space(9)[4], bus_dma(9)[5] и другие подсистемы. Популярные шины, которые используются более чем на одной архитектуре, такие как ISA, EISA, PCI, PCI-E и др., также абстрагированы, позволяя написанным под них драйверам также быть высоко-портируемыми с минимальным изменением кода.

«Экстремальный» пример HAL может быть найден в архитектурах System/38 (англ.)русск. и AS/400. Большинство компиляторов для таких систем генерируют абстрактный машинный код. Лицензированный внутренний код (Licensed Internal Code (англ.)русск., LIC) переводит этот виртуальный машинный код во внутренний(собственный) код процессора, на котором он запускается, и выполняет получившийся внутренний код. (Исключение составляют компиляторы, которые сами генерируют ЛИК; эти компиляторы не доступны за пределами IBM). К примеру, прикладное программное обеспечение и программное обеспечение операционной системы, расположенные над слоем ЛИК, скомпилированные на оригинальной архитектуре System/38, запускаются без каких-либо модификаций и перекомпиляций на последних системах AS/400. И это несмотря на тот факт, что лежащее в основе аппаратное обеспечение было кардинально изменено; по крайней мере три различных типа микропроцессоров находились в использовании.

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

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

См. также

Примечания

  1. Windows NT Hardware Abstraction Layer (HAL). Microsoft (31 октября 2006). Архивировано из первоисточника 3 марта 2012. Проверено 25 августа 2007.
  2. uvm(9) — NetBSD Manual Pages
  3. pmap(9) — NetBSD Manual Pages
  4. bus_space(9) — NetBSD Manual Pages
  5. bus_dma(9) — NetBSD Manual Pages

Wikimedia Foundation. 2010.

Игры ⚽ Нужно решить контрольную?

Полезное


Смотреть что такое "Слой аппаратных абстракций" в других словарях:

  • NTLDR — Тип Загрузчик операционной системы Разработчик Microsoft Операционная система Windows NT, 2000, XP, Server 2003 Лицензия Проприеритарная NTLDR (сокращение от англ. NT …   Википедия

  • Hardware abstraction layer — У этого термина существуют и другие значения, см. HAL. Hardware Abstraction Layer (HAL, Слой аппаратных абстракций)  слой абстрагирования, реализованный в программном обеспечении, находящийся между физическим уровнем аппаратного обеспечения… …   Википедия

  • Архитектура Windows NT — Windows NT 3.1, Windows NT 3.5, Windows NT 3.51 …   Википедия

  • Microsoft Windows — Эту страницу предлагается переименовать в Windows. Пояснение причин и обсуждение  на странице Википедия:К переименованию/2 апреля 2012. Возможно, её текущее название не соответствует нормам современного русского языка и/или правилам… …   Википедия

  • Installable File System — (IFS) API файловых систем в IBM OS/2 и Microsoft Windows, который позволяет операционной системе распознать и загрузить драйвер файловой системы. Содержание 1 История 2 IFS в OS/2 3 IFS в Windows NT …   Википедия

  • Ядро операционной системы — В этой статье не хватает ссылок на источники информации. Информация должна быть проверяема, иначе она может быть поставлена под сомнение и удалена. Вы можете …   Википедия

  • Ядро (операционной системы) — У этого термина существуют и другие значения, см. Ядро. Ядро центральная часть операционной системы (ОС), обеспечивающая приложениям координированный доступ к ресурсам компьютера, таким как процессорное время, память и внешнее аппаратное… …   Википедия

  • HAL — может значить: по отношению к программному обеспечению, Hardware abstraction layer общая статья о слоях аппаратных абстракций HAL (freedesktop.org) слой аппаратных абстракций от freedesktop.org; HAL/S, язык программирования, используемый на… …   Википедия

  • Экзоядро — Экзоядро  ядро операционной системы компьютеров, предоставляющее лишь функции для взаимодействия между процессами и безопасного выделения и освобожден …   Википедия

  • Ntdetect.com — это компонент операционных систем Microsoft Windows NT, работающих на архитектуре x86. Он используется во время процесса запуска Windows NT и отвечает за обнаружение основного аппаратного обеспечения, которое требуется для запуска операционной… …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»