Планетарный пограничный слой
- 1 year ago
- 0
- 0
Hardware Abstraction Layer (HAL, Слой аппаратных абстракций ) — слой абстрагирования , реализованный в программном обеспечении, находящийся между физическим уровнем аппаратного обеспечения и программным обеспечением , запускаемом на этом компьютере. HAL предназначен для скрытия различий в аппаратном обеспечении от основной части ядра операционной системы , таким образом, чтобы большая часть кода, работающая в режиме ядра , не нуждалась в изменении при её запуске на системах с различным аппаратным обеспечением.
На персональных компьютерах HAL, по существу, может рассматриваться как драйвер материнской платы , позволяющий взаимодействовать инструкциям высокоуровневых языков программирования с низкоуровневыми компонентами, такими, как аппаратное обеспечение.
В операционных системах семейства Windows NT HAL является неотъемлемой частью кода, исполняемого в режиме ядра, находится в отдельном загрузочном модуле, загружаемом совместно с ядром. Это обеспечивает возможность использования одного и того же загрузочного модуля собственно ядра ОС Windows NT на ряде систем с различными архитектурами шин ввода-вывода, управления прерываниями и таймерами.
К примеру, рабочие станции, основанные на SGI Intel x86 , были не совместимы с IBM PC-совместимыми рабочими станциями , но благодаря HAL Windows NT мог запускаться на них. Аналогичным образом одно и то же ядро Windows NT используется как на современных системах с контроллером прерываний APIC , так и на устаревших системах без поддержки APIC.
Windows Vista и выше ( Windows Server 2008 и выше для серверов) автоматически определяют, какой уровень HAL должен быть использован во время загрузки.
BSD
,
macOS
,
Linux
,
Solaris
,
CP/M
,
MS-DOS
и некоторые другие портируемые ОС также имеют HAL, несмотря на то, что он не разрабатывался явно для выполнения описанных выше функций. Некоторые системы, такие, как Linux, имеют возможность вставлять подобный слой, к примеру,
, во время работы. Ядро операционной системы
NetBSD
широко известно наличием чистого слоя абстрагирования от аппаратного обеспечения (HAL), что позволяет ему быть
высокопортируемым
. Частью этой системы являются
/
,
,
и другие подсистемы. Популярные шины, которые используются более чем на одной архитектуре, такие, как
ISA
,
EISA
,
PCI
,
PCI-E
и др., также абстрагированы, позволяя написанным под них драйверам также быть высокопортируемыми с минимальным изменением кода.
«Экстремальный» пример HAL может быть найден в архитектурах AS/400 . Большинство компиляторов для таких систем генерирует абстрактный машинный код . Лицензированный внутренний код (LIC) переводит этот виртуальный машинный код во внутренний (собственный) код процессора, на котором он запускается, и выполняет получившийся внутренний код (исключение составляют компиляторы, которые сами генерируют LIC; эти компиляторы не доступны за пределами IBM ).
иК примеру, прикладное программное обеспечение и программное обеспечение операционной системы, расположенные над слоем LIC, скомпилированные на оригинальной архитектуре System/38, запускаются без каких-либо модификаций и перекомпиляций на последних системах AS/400. И это несмотря на тот факт, что лежащее в основе аппаратное обеспечение было кардинально изменено; по крайней мере, три различных типа микропроцессоров находились в использовании.
HAL является более низким уровнем в компьютерных языках программирования, чем API , потому что он взаимодействует непосредственно с аппаратным обеспечением вместо ядра системы, следовательно, HAL требует меньше процессорного времени, чем API. Языки высокого уровня часто используют HAL и API для взаимодействия с компонентами более низкого уровня.
Операционные системы, имеющие HAL, легко портируются на различное оборудование. Это особенно важно для встраиваемых систем , которые должны работать на большом количестве различных платформ.
{{
citation
}}
:
|access-date=
требует
|url=
(
справка
)
|
В статье
не хватает
ссылок на источники
(см.
рекомендации по поиску
).
|