Пример Defer to Kernel демонстрирует использование паттернов Defer to Kernel и Policy Decision Point.
Пример Defer to Kernel содержит три пользовательские сущности: PictureManager, ValidPictureClient и NonValidPictureClient.
В этом примере сущности ValidPictureClient и NonValidPictureClient обращаются к сущности PictureManager для получения информации.
Только сущности ValidPictureClient разрешено взаимодействие с сущностью PictureManager.
Ядро KasperskyOS гарантирует изоляцию сущностей.
Контроль взаимодействия сущностей в KasperskyOS вынесен в модуль безопасности Kaspersky Security Module. Эта подсистема анализирует каждый отправляемый запрос и ответ и на основе заданной политики безопасности выносит решение: разрешить или запретить его доставку.
Политика безопасности в примере Defer to Kernel имеет следующие особенности:
ValidPictureClient явно разрешено взаимодействие с сущностью PictureManager.NonValidPictureClient взаимодействие с сущностью PictureManager не разрешено явно. Таким образом, это взаимодействие запрещено (принцип Default Deny).Динамическое создание IPC-каналов
Пример также демонстрирует возможность динамического создания IPC-каналов между сущностями. Динамическое создание IPC-каналов осуществляется с помощью сервера имен – специального сервиса ядра, представленного сущностью NameServer. Возможность динамического создания IPC-каналов позволяет изменять топологию взаимодействия сущностей "на лету". 
Любая сущность, которой разрешено взаимодействие с NameServer по IPC, может зарегистрировать в сервере имен свои интерфейсы. Другая сущность может запросить у сервера имен зарегистрированные интерфейсы, после чего осуществить подключение к нужному интерфейсу.
При этом все взаимодействия по IPC (даже созданные динамически) контролируются с помощью модуля безопасности.
Файлы примера
Код примера и скрипты для сборки находятся по следующему пути:
/opt/KasperskyOS-Community-Edition-<version>/examples/defer_to_kernel
Сборка и запуск примера
См. "Сборка и запуск примеров".
В начало