KasperskyOS: классы, экземпляры
и исполнимые файлы

Разбираемся в тонкостях именования и назначении классов, экземпляров и исполнимых файлов в KasperskyOS
Александр Лифанов
Менеджер по продукту, группа по развитию технического сообщества

Одна из стандартных проблем у осваивающих KasperskyOS — разобраться с классами процессов, их экземплярами и исполнимыми файлами. Расскажем об этом подробнее.

Где они определяются

Основой «каши» в голове обучающихся, с моей точки зрения, стало упрощение нотации, введенное в файл init.yaml.in и связанное с определением экземпляра процесса. Этот вопрос рассматривается в уроке 3-8 курса по KasperskyOS на Stepik, однако достаточно кратко. Соответствующая документация имеется здесь. Разберем еще раз.

Короткая и полная нотация определения экземпляра процесса в KasperskyOS на примере "hello world".
Короткая и полная нотация определения экземпляра процесса в KasperskyOS на примере «hello world»

Класс процесса

Каждый раздел в файле init.yaml.in, начинающийся с дефиса, определяет отдельный запускаемый процесс. Единственным обязательным параметром является name, который определяет ссылку на класс, с которого при запуске будет создан отдельный экземпляр (процесс).

Именно на имя класса будет ссылаться политика безопасности, описываемая в файлах PSL. С учетом того, что из класса может быть запущено более одного экземпляра — одинаковая политика в этом случае будет применена к каждому из них.

Класс процесса с точки зрения структуры исходных файлов может быть достаточно сложным, состоять более чем из одного файла и/или процедуры, включать в себя линкуемые библиотеки (см. пример из курса обучения в отношении клиентской библиотеки VFS).

Имя процесса

Вторым (необязательным) параметром является task, который определяет имя этого самого экземпляра. Если параметр не указан, то тогда будет использовано имя класса, взятое полностью. Очевидно, что в рамках одного проекта имя экземпляра должно быть уникальным. Соответственно, опускать данный параметр можно до тех пор, пока вам не надо запускать более одного экземпляра класса.

При инициализации соединения (connection) целью (target) будет являться именно task, т.к. соединение клиент должен установить со вполне конкретным сервером.

При необходимости — из одного класса можно запустить не совсем идентичные (в работе) процессы. Это может быть сделано при помощи одного из двух механизмов — прямой передачи аргументов или установки переменных окружения. Подробнее с первым механизмом можно ознакомиться здесь, примеры приведены здесь. Или можно посмотреть net_with_separate_vfs из состава SDK.

Следует отметить, что с точки зрения архитектуры KasperskyOS — границы домена безопасности совпадают с экземпляром процесса. Это означает, что система контролирует только внешние коммуникации процесса, но не внутренние. Этот факт необходимо использовать для снижения нагрузки на систему безопасности, т.к. ресурсы для ее работы представляют собой основной overhead по сравнению с классическими системами.

Имя исполнимого файла

Третьим параметром (также необязательным) является path, который определяет имя исполнимого файла. По умолчанию он представляет собой часть имени класса от последней точки и до конца.

По большому счету, этот параметр не несет большой смысловой нагрузки, но именно содержимое этого параметра (заданное явно или не явно) видно в консоли в процессе загрузки образа операционной системы.

Кусок экрана загрузки KasperskyOS и соответствующий init.yaml
Одна из стандартных проблем у осваивающих KasperskyOS - разобраться с классами процессов, их экземплярами и исполнимыми файлами. Разберем подробнее.-3-2
Кусок экрана загрузки KasperskyOS и соответствующий init.yaml

При необходимости допустимо запускать один и тот же исполнимый файл несколько раз для создания экземпляров процесса, которые так же при помощи различных механизмов могут функционировать различно. Использование этого механизма (по сравнению с явным определением отдельного task в init.yaml) не рекомендовано по причине неудобства визуального контроля, но в случае динамического запуска процессов (не в init.yaml, а при помощи EntityInit() ) может оказаться единственным вариантом.

Одна из стандартных проблем у осваивающих KasperskyOS — разобраться с классами процессов, их экземплярами и исполнимыми файлами. Расскажем об этом подробнее.

Где они определяются

Основой «каши» в голове обучающихся, с моей точки зрения, стало упрощение нотации, введенное в файл init.yaml.in и связанное с определением экземпляра процесса. Этот вопрос рассматривается в уроке 3-8 курса по KasperskyOS на Stepik, однако достаточно кратко. Соответствующая документация имеется здесь. Разберем еще раз.

Короткая и полная нотация определения экземпляра процесса в KasperskyOS на примере "hello world".
Короткая и полная нотация определения экземпляра процесса в KasperskyOS на примере «hello world»

Класс процесса

Каждый раздел в файле init.yaml.in, начинающийся с дефиса, определяет отдельный запускаемый процесс. Единственным обязательным параметром является name, который определяет ссылку на класс, с которого при запуске будет создан отдельный экземпляр (процесс).

Именно на имя класса будет ссылаться политика безопасности, описываемая в файлах PSL. С учетом того, что из класса может быть запущено более одного экземпляра — одинаковая политика в этом случае будет применена к каждому из них.

Класс процесса с точки зрения структуры исходных файлов может быть достаточно сложным, состоять более чем из одного файла и/или процедуры, включать в себя линкуемые библиотеки (см. пример из курса обучения в отношении клиентской библиотеки VFS).

Имя процесса

Вторым (необязательным) параметром является task, который определяет имя этого самого экземпляра. Если параметр не указан, то тогда будет использовано имя класса, взятое полностью. Очевидно, что в рамках одного проекта имя экземпляра должно быть уникальным. Соответственно, опускать данный параметр можно до тех пор, пока вам не надо запускать более одного экземпляра класса.

При инициализации соединения (connection) целью (target) будет являться именно task, т.к. соединение клиент должен установить со вполне конкретным сервером.

При необходимости — из одного класса можно запустить не совсем идентичные (в работе) процессы. Это может быть сделано при помощи одного из двух механизмов — прямой передачи аргументов или установки переменных окружения. Подробнее с первым механизмом можно ознакомиться здесь, примеры приведены здесь. Или можно посмотреть net_with_separate_vfs из состава SDK.

Следует отметить, что с точки зрения архитектуры KasperskyOS — границы домена безопасности совпадают с экземпляром процесса. Это означает, что система контролирует только внешние коммуникации процесса, но не внутренние. Этот факт необходимо использовать для снижения нагрузки на систему безопасности, т.к. ресурсы для ее работы представляют собой основной overhead по сравнению с классическими системами.

Имя исполнимого файла

Третьим параметром (также необязательным) является path, который определяет имя исполнимого файла. По умолчанию он представляет собой часть имени класса от последней точки и до конца.

По большому счету, этот параметр не несет большой смысловой нагрузки, но именно содержимое этого параметра (заданное явно или не явно) видно в консоли в процессе загрузки образа операционной системы.

Кусок экрана загрузки KasperskyOS и соответствующий init.yaml
Одна из стандартных проблем у осваивающих KasperskyOS - разобраться с классами процессов, их экземплярами и исполнимыми файлами. Разберем подробнее.-3-2
Кусок экрана загрузки KasperskyOS и соответствующий init.yaml

При необходимости допустимо запускать один и тот же исполнимый файл несколько раз для создания экземпляров процесса, которые так же при помощи различных механизмов могут функционировать различно. Использование этого механизма (по сравнению с явным определением отдельного task в init.yaml) не рекомендовано по причине неудобства визуального контроля, но в случае динамического запуска процессов (не в init.yaml, а при помощи EntityInit() ) может оказаться единственным вариантом.

Консультация по решению

Остались вопросы или требуется дополнительная информация по решению? Оставьте заявку на консультацию, и мы с вами свяжемся!

Задать вопрос

Отвечаем на самые популярные вопросы о KasperskyOS и решениях на ее основе

Перейти в FAQ