Использование рабочего набора (ws_api.h)

12 января 2026

ID libkos_ws_api

API определен в заголовочном файле sysroot-*-kos/include/coresrv/vmm/ws_api.h из состава KasperskyOS SDK.

API предназначен для выполнения операций с рабочим набором. Рабочий набор (англ. Working Set, WS) – это абстракция, которая описывает использование физической памяти в системе. Представляет собой объект ядра KasperskyOS, который ассоциирован с такими данными, как общее число страниц физической памяти в системе, число занятых страниц физической памяти в системе, пороговые значения для размера занятой физической памяти в системе.

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

Если число занятых страниц физической памяти в системе достигает порогового значения, ядро ассоциирует событие с рабочим набором, указывая в маске событий флаг EVENT_WS_THRESHOLD. Чтобы получать уведомления о событиях, связанных с рабочим набором, нужно использовать API notice_api.h.

Функции API потокобезопасны.

Сведения о функциях API приведены в таблице ниже.

Открытие доступа к рабочему набору

Чтобы открыть доступ к рабочему набору, нужно вызвать функцию KnPmmWsOpen(). Доступ к рабочему набору может быть открыт многократно в одном или нескольких процессах. Через выходной параметр outHandle функция KnPmmWsOpen() передает дескриптор рабочего набора. Этот дескриптор является входным параметром не только для остальных функций этого API, но и для функций API notice_api.h, которые используются для настройки приемника уведомлений.

Если доступ к рабочему набору больше не требуется, его дескриптор нужно закрыть.

Получение характеристик рабочего набора

Чтобы получить характеристики рабочего набора, нужно вызвать функцию KnPmmWsGetInfo().

Рабочий набор имеет следующие характеристики:

  • общее число страниц физической памяти в системе (maxSize);
  • число занятых страниц физической памяти в системе (currentSize);
  • нижнее пороговое значение для размера занятой физической памяти в системе (lowThreshold);
  • верхнее пороговое значение для размера занятой физической памяти в системе (highThreshold);
  • характеристика, которая отражает, установлены ли пороговые значения для размера занятой физической памяти в системе (nextThresholdToBeTriggered).

Характеристика nextThresholdToBeTriggered может иметь следующие значения:

  • WsNoThresholdIsActive – пороговые значения не установлены.
  • WsThresholdHighIsNext – отслеживается верхнее пороговое значение.
  • WsThresholdLowIsNext – отслеживается нижнее пороговое значение.

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

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

Чтобы удалить пороговые значения для размера занятой физической памяти в системе, нужно вызвать функцию KnPmmWsClearThreshold(). В результате ее вызова ядро прекращает отслеживать достижение ранее установленных пороговых значений, и эти пороговые значения обнуляются.

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

Сведения о функциях API

Функции ws_api.h

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