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

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, легко портируются на различное оборудование. Это особенно важно для встраиваемых систем , которые должны работать на большом количестве различных платформ.

См. также

Примечания

  1. . Microsoft (31 октября 2006). Дата обращения: 25 августа 2007. 3 марта 2012 года.
  2. Helen Custer (1993), Inside Windows NT , Microsoft Press {{ citation }} : |access-date= требует |url= ( справка )
  3. Russinovich, Mark. E.; Solomon, David A.; Ionescu, Alex. Windows Internals: Including Windows Server 2008 and Windows Vista (англ.) . — 5th. — Redmond, Wash.: (англ.) , 2008. — P. 65. — ISBN 978-0-7356-2530-3 .
  4. Soltis, Frank G. Inside the AS/400: Featuring the AS/400e Series (англ.) . — 2nd. — Loveland, Colo.: Duke Press, 1997. — ISBN 978-1-882419-66-1 .
Источник —

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