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

Архитектура 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

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

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

В начало