Архитектура KasperskyOS

21 мая 2024

ID overview_architecture

Архитектура KasperskyOS представлена на рисунке ниже:

Архитектура KasperskyOS

Архитектура KasperskyOS

В KasperskyOS приложения и драйверы взаимодействуют между собой и с ядром, используя библиотеку libkos, которая предоставляет интерфейсы для обращения к службам ядра. (Драйвер в KasperskyOS в общем случае работает на том же уровне привилегий, что и приложение.) Библиотека libkos обращается к ядру, выполняя только три системных вызова: Call(), Recv() и Reply(), которые реализуют механизм IPC. Службы ядра поддерживаются подсистемами ядра, назначение которых приведено в таблице ниже. Подсистемы ядра взаимодействуют с аппаратурой через уровень аппаратных абстракций (англ. Hardware Abstraction Layer, HAL), что упрощает портирование KasperskyOS на различные платформы.

Подсистемы ядра и их назначение

Обозначение

Наименование

Назначение

HAL

Подсистема аппаратных абстракций

Базовая поддержка аппаратуры: таймеры, контроллеры прерываний, блок управления памятью (англ. Memory Management Unit, MMU). Подсистема включает в себя драйверы UART и низкоуровневые средства управления электропитанием.

IO

Менеджер ввода-вывода

Регистрация и освобождение ресурсов аппаратной платформы, необходимых для работы драйверов: прерываний (англ. Interrupt ReQuest, IRQ), MMIO-памяти (англ. Memory-Mapped Input-Output), портов ввода-вывода, буферов DMA. При наличии на аппаратной платформе блока управления памятью для операций ввода-вывода (англ. Input-Output Memory Management Unit, IOMMU) подсистема обеспечивает гарантию разделения памяти, используемой устройствами.

MM

Менеджер физической памяти

Выделение и освобождение физических страниц памяти, распределение областей физически непрерывных страниц.

VMM

Менеджер виртуальной памяти

Управление физической и виртуальной памятью: резервирование, фиксация, освобождение. Работа с таблицами страниц памяти для изоляции адресных пространств процессов.

THREAD

Менеджер потоков

Управление потоками исполнения: создание, завершение, блокирование и возобновление.

TIME

Подсистема часов реального времени

Получение и установка системного времени. Использование таймеров, предоставляемых аппаратурой.

SCHED

Планировщик

Планирование потоков исполнения: стандартных потоков, потоков реального времени, потоков бездействия (IDLE).

SYNC

Подсистема, обеспечивающая примитивы синхронизации

Реализация базовых примитивов синхронизации: спинлоков (англ. spinlock), мьютексов (англ. mutex), событий (англ. event). Ядро поддерживает только один примитив – фьютекс (англ. futex), остальные примитивы реализованы на его основе в пространстве пользователя.

IPC

Подсистема межпроцессного взаимодействия

Реализация синхронного механизма IPC по принципу рандеву.

KSMS

Подсистема взаимодействия с модулем безопасности

Подсистема, работающая с модулем безопасности. Она предоставляет модулю безопасности для проверки все сообщения, передающиеся через IPC.

OBJ

Менеджер объектов

Управление общим поведением всех ресурсов KasperskyOS: отслеживание жизненного цикла, назначение уникальных идентификаторов безопасности (подробнее см. "Управление доступом к ресурсам"). Подсистема тесно связана с механизмом управления доступом на основе мандатных ссылок (англ. Object Capability, OCap).

ROMFS

Подсистема запуска образа неизменяемой файловой системы

Операции с файлами из ROMFS: открытие и закрытие, получение списка файлов и их описаний, получение характеристик файла (имени, размера).

TASK

Подсистема управления процессами

Управление процессами: создание, запуск, завершение. Получение сведений о запущенных процессах (например, имени, пути) и кодов их завершения.

ELF

Подсистема загрузки исполняемых файлов

Загрузка исполняемых ELF-файлов из ROMFS в оперативную память, разбор заголовков ELF-файлов.

DBG

Подсистема поддержки отладки

Механизм отладки на основе GDB (GNU Debugger). Наличие подсистемы в ядре опционально.

PM

Менеджер электропитания

Управление электропитанием: выполнение перезагрузки и выключения.

Вам помогла эта статья?
Что нам нужно улучшить?
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!