Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции ОС.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
194.44 Кб
Скачать

Объекты ядра

Ядро состоит из низкоуровневых четко определенных и хорошо предсказуемых механизмов ОС, которые позволяют компонентам исполнительной системы в целом выполнять свои функции. Замечание: в Windows ядро отделено от остальной части исполнительной системы, не реализует системные механизмы и не принимает решений, связанных с системной политикой по организации вычислительного процесса. Все решения принимаются исполнительной подсистемой (кроме частично планируемой диспетчеризации процессов и потоков).

Исполнительная подсистема предоставляет все общедоступные ресурсы в виде объектов. Замечание: управление объектами требует системных издержек: описатели, средства защиты квоты и т.д. Чтобы снизить системные издержки, ядро реализует свои объекты, называемые объектами ядра (kernel objects). Возможна ситуация, когда один объект исполнительной подсистемы инкапсулирует, включает в себя несколько объектов ядра.

Объекты ядра делятся на следующие группы:

1) управляющие объекты ядра (Control Objects) – объекты, связанные с обработкой прерываний, исключений, некоторой частью ввода-вывода и др.

2) объекты диспетчера ядра – реализуют средства синхронизации для планирования выполнения потоков, включают такие объекты как поток ядра (Kernel Thread), мьютекс, событие, семафор, таймер, ожидаемый таймер и др. Объекты ядра создает исполнительная система с помощью функций ядра. Кроме того, манипулируя этими функциями, создает сложные объекты.

Поддержка оборудования

Одна из основных задач ядра – изоляция исполнительной подсистемы и драйверов устройств от различий между аппаратными платформами, поддерживаемыми Windows. Идея: максимальное обобщение кода ядра – минимум аппаратно-зависимой части. Кроме того, поддержка идентичных и переносимых в случае изменения платформ интерфейсов к функциям ядра. Замечание: интерфейсы в зависимости от аппаратной части реализуются по-разному, но можно выделить и аппаратно-независимые интерфейсы, которые можно выполнять внутри ОС на любой платформе.

Пример: в ядре Windows содержится часть кода с x86 специфичным интерфейсом, необходимым для поддержки приложений MS-DOS. Эти интерфейсы не являются переносимыми, т.е. нельзя выполнять на другой аппаратной платформе (например, поддерживает манипуляцию с GDT и LDT при организации виртуальной памяти специфичными для x86).

Различны также блоки динамического преобразования адресов – аппаратная поддержка преобразования виртуального адреса в реальный. Поэтому в ядре предусмотрена компонента, которая называется HAL, скрывающая отличия программно-аппаратных платформ.

Уровень абстрагирования от оборудования (Hardware Abstraction Layer)

Является ключевой компонентой ядра, осуществляющей переносимость. HAL – загружаемый модуль hal.dll (слайд 28), предоставляет низкоуровневый интерфейс с аппаратной платформой. Скрывает специфику аппаратной платформы (контроллеры, регистры, ядра, система команд и др.).

Идея: когда компонентам Windows нужна платформенно-зависимая информация, они обращаются не к самой аппаратуре, а к программе HAL. Интерфейс обращения к HAL ОС, драйверов документирован в Windows DDK.

Windows предоставляет несколько типов модулей HAL. При установке Windows устанавливается один. На слайде 28 представлены возможные названия модулей HAL под ту или иную аппаратную платформу.

ОС предоставляет возможность просмотреть взаимосвязь образа ядра ntoskrnl.exe и HAL. На слайде 29 ntoskernel связан сам с собой, с HAL, HAL связан с NT Kernel и видеодрайвером.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]