Слой аппаратных абстракций
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, Mac OS X, Linux, Solaris, CP/M, MS-DOS и некоторые другие портируемые ОС также имеют HAL, несмотря на то, что он не разрабатывался явно для выполнения описанных выше функций. Некоторые системы, такие, как Linux, имеют возможность вставлять подобный слой, к примеру, Adeos, во время работы. Ядро операционной системы NetBSD широко известно наличием чистого слоя абстрагирования от аппаратного обеспечения (HAL), что позволяет ему быть высокопортируемым. Частью этой системы являются uvm(9)/pmap(9), bus_space(9), bus_dma(9) и другие подсистемы. Популярные шины, которые используются более чем на одной архитектуре, такие, как ISA, EISA, PCI, PCI-E и др., также абстрагированы, позволяя написанным под них драйверам также быть высокопортируемыми с минимальным изменением кода.
«Экстремальный» пример HAL может быть найден в архитектурах System/38 и AS/400. Большинство компиляторов для таких систем генерируют абстрактный машинный код . Лицензированный внутренний код (LIC) переводит этот виртуальный машинный код во внутренний (собственный) код процессора, на котором он запускается, и выполняет получившийся внутренний код (исключение составляют компиляторы, которые сами генерируют LIC; эти компиляторы не доступны за пределами IBM).
К примеру, прикладное программное обеспечение и программное обеспечение операционной системы, расположенные над слоем LIC, скомпилированные на оригинальной архитектуре System/38, запускаются без каких-либо модификаций и перекомпиляций на последних системах AS/400. И это несмотря на тот факт, что лежащее в основе аппаратное обеспечение было кардинально изменено; по крайней мере, три различных типа микропроцессоров находились в использовании.HAL является даже более низким уровнем в компьютерных языках программирования, чем API, потому что он взаимодействует непосредственно с аппаратным обеспечением вместо ядра системы, следовательно, HAL требует меньше процессорного времени, чем API. Языки высокого уровня часто используют HAL и API для взаимодействия с компонентами более низкого уровня.
Операционные системы, имеющие HAL, легко портируются на различное оборудование. Это особенно важно для встраиваемых систем , которые должны работать на большом количестве различных платформ .
Источник: Википедия
Связанные понятия
Основная область памяти (Основная память, англ. Conventional memory) занимает первые 640 Кбайт оперативной памяти в IBM PC-совместимых компьютерах. В эту область загружается таблица векторов прерываний (занимает 1 Кбайт), некоторые данные из BIOS (например, буфер клавиатуры), различные 16-битные программы DOS. Для них 640 Кбайт являются барьером.
Двои́чная совмести́мость , бина́рная совмести́мость (англ. binary compatibility) — вид программной совместимости, позволяющий программе работать в различных средах без изменения её исполняемых файлов.
Кросс-компиля́тор (англ. cross compiler) — компилятор, производящий исполняемый код для платформы, отличной от той, на которой исполняется сам кросс-компилятор. Такой инструмент бывает полезен, когда нужно получить код для платформы, экземпляров которой нет в наличии, или в случаях когда компиляция на целевой платформе невозможна или нецелесообразна (например, это касается мобильных систем или микроконтроллеров с минимальным объёмом памяти).
DLL (англ. Dynamic Link Library — «
библиотека динамической компоновки», «динамически подключаемая библиотека») в операционных системах Microsoft Windows и IBM OS/2 — динамическая библиотека, позволяющая многократное использование различными программными приложениями. Эти библиотеки обычно имеют расширение DLL, OCX (для библиотек содержащих ActiveX), или DRV (для ряда системных драйверов). Формат файлов для DLL такой же, как для EXE-файлов Windows, т. е. Portable Executable (PE) для 32-битных и 64-битных...
Загрузчик операционной системы — системное программное обеспечение, обеспечивающее загрузку операционной системы непосредственно после включения компьютера (процедуры POST) и начальной загрузки.
Модуль ядра , загружаемый модуль ядра (англ. loadable kernel module, LKM) — объект, содержащий код, который расширяет функциональность запущенного или т. н. базового ядра ОС. Большинство текущих систем, основанных на Unix, поддерживают загружаемые модули ядра, хотя они могут называться по-разному (например, kernel loadable module в FreeBSD и kernel extension в Mac OS X).
Совмести́мость — способность различных объектов — аппаратных или программных компонентов — взаимодействовать друг с другом. По отношению к компьютерам можно выделить аппаратную (техническую), программную и информационную совместимость...
Уровень абстракции — один из способов сокрытия деталей реализации определенного набора функциональных возможностей. Применяется для управления сложностью проектируемой системы при декомпозиции, когда система представляется в виде иерархии уровней абстракции.
Защита памяти (англ. Memory protection) — это способ управления правами доступа к отдельным регионам памяти. Используется большинством многозадачных операционных систем. Основной целью защиты памяти является запрет доступа процессу к той памяти, которая не выделена для этого процесса. Такие запреты повышают надёжность работы как программ, так и операционных систем, так как ошибка в одной программе не может повлиять непосредственно на память других приложений. Следует различать общий принцип защиты...
О программном обеспечении рассказывает другая статья.Переносимое приложение (также портативное, автономное, и — неточно, в качестве кальки — портированное; англ. portable application, portable app) — программное обеспечение, которое для своего запуска не требует процедуры установки и может полностью храниться на съёмных носителях информации, что позволяет использовать данное ПО на многих компьютерах. Переносимое приложение может быть настроено так, чтобы считывать свои конфигурационные настройки...
Подробнее: Переносимое приложение
Моноли́тное ядро ́ — классическая и, на сегодняшний день, наиболее распространённая архитектура ядер операционных систем. Монолитные ядра предоставляют богатый набор абстракций оборудования. Все части монолитного ядра работают в одном адресном пространстве.
Открытая архитектура — архитектура компьютера, периферийного устройства или же программного обеспечения, на которую опубликованы спецификации, что позволяет другим производителям разрабатывать дополнительные устройства к системам с такой архитектурой.
Кольца защиты — архитектура информационной безопасности и функциональной отказоустойчивости, реализующая аппаратное разделение системного и пользовательского уровней привилегий. Структуру привилегий можно изобразить в виде нескольких концентрических кругов. В этом случае системный режим (режим супервизора или нулевое кольцо, так называемое «кольцо 0»), обеспечивающий максимальный доступ к ресурсам, является внутренним кругом, тогда как режим пользователя с ограниченным доступом — внешним. Традиционно...
Планировщик задач — программа (служба или демон), часто называемая сервисом операционной системы, которая запускает другие программы в зависимости от различных критериев, как, например...
Защищённый режим (режим защищённой виртуальной адресации) — режим работы x86-совместимых процессоров. Частично был реализован уже в процессоре 80286, но там существенно отличался способ работы с памятью, так как процессоры ещё были 16-битными и не была реализована страничная организация памяти. Первая 32-битная реализация защищённого режима — процессор Intel 80386. Применяется в совместимых процессорах других производителей. Данный режим используется в современных многозадачных операционных системах...
Реальный режим (или режим реальных адресов; англ. real-address mode) — режим работы процессоров архитектуры x86, при котором используется сегментная адресация памяти (адрес ячейки памяти формируется из двух чисел: сдвинутого на 4 бита адреса начала сегмента и смещения ячейки от начала сегмента; любому процессу доступна вся память компьютера). Изначально режим не имел названия, был назван «реальным» только после создания процессоров 80286, поддерживающих режим, названный «защищённым» (режим назван...
Аппаратная виртуализация — виртуализация с поддержкой специальной процессорной архитектуры. В отличие от программной виртуализации, с помощью данной техники возможно использование изолированных гостевых систем, управляемых гипервизором напрямую.
Установка программного обеспечения , инсталляция — процесс установки программного обеспечения на компьютер конечного пользователя. Выполняется особой программой (пакетным менеджером), присутствующей в операционной системе (например, RPM, APT или dpkg в Linux, Установщик Windows в Microsoft Windows), или же входящим в состав самого программного обеспечения средством установки. В операционной системе GNU очень распространено использование системы GNU toolchain и её аналогов для компиляции программного...
Двоичная трансляция делится на статическую и динамическую. Динамическая компиляция происходит незаметно для пользователя, при запуске приложения. Статический компилятор делает из двоичного кода исходной архитектуры готовое полноценное приложение для целевой архитектуры. При статической ДТ весь исходный исполняемый файл транслируется в исполнимый файл для целевой архитектуры. Это весьма непростая задача - выполнить данную трансляцию абсолютно корректно, так как не весь код сразу считывается транслятором...
Вытесняющая многозадачность (приоритетная многозадачность, англ. preemptive multitasking, дословно упреждающая многозадачность) — это вид многозадачности, при которой операционная система принимает решение о переключении между задачами по истечении некоего кванта времени.
Управля́емый код (англ. managed code) — термин, введённый фирмой Microsoft, для обозначения кода программы, исполняемой под «управлением» виртуальной машины .NET — Common Language Runtime или Mono. При этом машинный код называется неуправля́емым кодом (англ. unmanaged code).
Дамп памяти (англ. memory dump; в Unix — core dump) — содержимое рабочей памяти одного процесса, ядра или всей операционной системы. Также может включать дополнительную информацию о состоянии программы или системы, например значения регистров процессора и содержимое стека. Многие операционные системы позволяют сохранять дамп памяти для отладки программы. Как правило, дамп памяти процесса сохраняется автоматически, когда процесс завершается из-за критической ошибки (например, из-за ошибки сегментации...
Расширенная память (англ. expanded memory) — аппаратно-программная система, предоставляющая доступ DOS-приложениям к памяти, недоступной через адресное пространство основной памяти. Расширенная память адресуется странично через «окно», находящееся в верхней зарезервированной области памяти (UMA). Спецификация расширенной памяти (англ. Expanded Memory Specification, EMS) была разработана в 1984 году совместно Lotus Software, Intel и Microsoft, поэтому часто встречается сокращение LIM EMS. С конца...
Виртуальная файловая система (англ. virtual file system — VFS) или виртуальный коммутатор файловой системы (англ. virtual filesystem switch) — уровень абстракции поверх конкретной реализации файловой системы. Целью VFS является обеспечение единообразного доступа клиентских приложений к различным типам файловых систем. VFS может быть использована для доступа к локальным устройствам и файлам (fat32, ext4, ntfs), сетевым устройствам и файлам на них (nfs), а также к устройствам, не предназначенным для...
Гибридное ядро (англ. Hybrid kernel) — модифицированные микроядра, позволяющие для ускорения работы запускать модули OS в пространстве ядра.
По умолча́нию — термин, используемый для обозначения значений параметров какой-либо программы, предустановленных разработчиком. Пользователь может изменить эти установки явным образом, однако, если он не сделал этого, то в качестве значений используются параметры, заданные разработчиком.
А́дресное пространство (англ. address space) — совокупность всех допустимых адресов каких-либо объектов вычислительной системы — ячеек памяти, секторов диска, узлов сети и т. п., которые могут быть использованы для доступа к этим объектам при определенном режиме работы (состоянии системы).
В области компьютеризации под аппаратным ускорением понимают применение аппаратного обеспечения для выполнения некоторых функций быстрее по сравнению с выполнением программ процессором общего назначения. Примерами аппаратного ускорения может служить блоковое ускорение выполнения в графическом процессоре и инструкции комплексных операций в микропроцессоре.
Подробнее: Аппаратное ускорение
Точка монтирования (англ. mount point) — это каталог или файл, с помощью которого обеспечивается доступ к новой файловой системе, каталогу или файлу.
Механизм копирования
при записи (англ. Copy-On-Write, COW) используется для оптимизации многих процессов, происходящих в операционной системе, таких как, например, работа с оперативной памятью или файлами на диске (пример — ext3cow).
Систе́мный вы́зов (англ. system call) в программировании и вычислительной технике — обращение прикладной программы к ядру операционной системы для выполнения какой-либо операции.
Эмулятор терминала , приложение терминала, term или tty для краткости — это программа, которая эмулирует терминал компьютера внутри некоторой другой архитектуры вывода данных на экран.
Виртуальная машина (VM, от англ. virtual machine) — программная и/или аппаратная система, эмулирующая аппаратное обеспечение некоторой платформы (target — целевая, или гостевая платформа) и исполняющая программы для target-платформы на host-платформе (host — хост-платформа, платформа-хозяин) или виртуализирующая некоторую платформу и создающая на ней среды, изолирующие друг от друга программы и даже операционные системы (см.: песочница); также спецификация некоторой вычислительной среды (например...
Исполняемый файл (англ. executable file, также выполняемый, реже исполнимый, выполнимый) — файл, содержащий программу в виде, в котором она может быть исполнена компьютером. Перед исполнением программа загружается в память, и выполняются некоторые подготовительные операции (настройка окружения, загрузка библиотек).
Среда выполнения (англ. execution environment, иногда «ранта́йм» от англ. runtime — «время выполнения») в информатике — вычислительное окружение, необходимое для выполнения компьютерной программы и доступное во время выполнения компьютерной программы. В среде выполнения, как правило, невозможно изменение исходного текста программы, но может наличествовать доступ к переменным окружения операционной системы, таблицам объектов и модулей разделяемых библиотек.
Дизассе́мблер (от англ. disassembler ) — транслятор, преобразующий машинный код, объектный файл или библиотечные модули в текст программы на языке ассемблера.
Обра́тная совмести́мость — наличие в новой версии компьютерной программы или компьютерного оборудования интерфейса, присутствующего в старой версии, в результате чего другие программы (или человек) могут продолжать работать с новой версией без значительной переделки (или переучивания). Полная обратная совместимость означает, что при замене старой версии компонента на новую функционирование всей системы в целом не нарушится.
Гиперви́зор (англ. Hypervisor; от др.-греч. ὑπέρ «над, выше, сверх» + лат. vīsio «зрение; видение») или монито́р виртуа́льных маши́н (в компьютерах) — программа или аппаратная схема, обеспечивающая или позволяющая одновременное, параллельное выполнение нескольких операционных систем на одном и том же хост-компьютере. Гипервизор также обеспечивает изоляцию операционных систем друг от друга, защиту и безопасность, разделение ресурсов между различными запущенными ОС и управление ресурсами.
Командный интерпретатор, интерпретатор командной строки — компьютерная программа, часть операционной системы, обеспечивающая базовые возможности управления компьютером посредством интерактивного ввода команд через интерфейс командной строки или последовательного исполнения пакетных командных файлов.
Мультизагрузка (англ. Multi-boot) это техническая возможность выбора, при включении компьютера, операционной системы для запуска. Для настройки такой возможности может потребоваться специальный загрузчик операционной системы и разбиение диска на несколько разделов.
Переключение контекста (англ. context switch) — в многозадачных ОС и средах - процесс прекращения выполнения процессором одной задачи (процесса, потока, нити) с сохранением всей необходимой информации и состояния, необходимых для последующего продолжения с прерванного места, и восстановления и загрузки состояния задачи, к выполнению которой переходит процессор.
Загрузочный сектор , бутсектор (англ. boot sector, Volume boot sector (Volume boot record), Partition boot sector) — это особый сектор на жёстком диске, дискете или другом дисковом устройстве хранения информации. (Для дискеты это первый физический сектор, для жёсткого диска — первый физический сектор для каждого раздела.) В процессе загрузки компьютера с дискеты он загружается в память программой POST (в компьютерах архитектуры IBM PC обычно с адреса 0000:7c00), ему передается управление командой...
Кадровый буфер (англ. framebuffer) (другие названия: буфер кадра, видеобуфер, фреймбуфер) — реальное или виртуальное электронное устройство или область памяти для кратковременного хранения одного или нескольких кадров в цифровом виде перед его отправкой на устройство видеовывода. Буфер может быть использован для выполнения над кадром различных предварительных операций, организации стоп-кадра, устранения мерцания изображения и др. Обычно кадр хранится в виде последовательности цветовых значений каждого...
Снимок файловой системы , или снапшот, или снепшот (от англ. snapshot — мгновенный снимок), — моментальный снимок, копия файлов и каталогов файловой системы на определённый момент времени.
Оболо́чка операцио́нной систе́мы (от англ. shell «оболочка») — интерпретатор команд операционной системы, обеспечивающий интерфейс для взаимодействия пользователя с функциями системы.
Переменная среды ́ (англ. environment variable) — текстовая переменная операционной системы, хранящая какую-либо информацию — например, данные о настройках системы.
Архитекту́ра проце́ссора — количественная составляющая компонентов микроархитектуры вычислительной машины (процессора компьютера) (например, регистр флагов или регистры процессора), рассматриваемая IT-специалистами в аспекте прикладной деятельности.
Виртуа́льная па́мять (англ. virtual memory) — метод управления памятью компьютера, позволяющий выполнять программы, требующие больше оперативной памяти, чем имеется в компьютере, путём автоматического перемещения частей программы между основной памятью и вторичным хранилищем (например, жёстким диском). Для выполняющейся программы данный метод полностью прозрачен и не требует дополнительных усилий со стороны программиста, однако реализация этого метода требует как аппаратной поддержки, так и поддержки...