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

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().

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

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

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

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

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

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

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

Функции ws_api.h

Функция

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

KnPmmWsOpen()

Назначение

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

Параметры

  • [out] outHandle – указатель на дескриптор рабочего набора.

Возвращаемые значения

В случае успеха возвращает rcOk, иначе возвращает код ошибки.

KnPmmWsGetInfo()

Назначение

Позволяет получить характеристики рабочего набора.

Параметры

  • [in] ws – дескриптор рабочего набора.
  • [out] info – указатель на структуру для сохранения характеристик рабочего набора.

Возвращаемые значения

В случае успеха возвращает rcOk, иначе возвращает код ошибки.

KnPmmWsSetThreshold()

Назначение

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

Параметры

  • [in] ws – дескриптор рабочего набора.
  • [in] threshold – нижнее пороговое значение, в страницах памяти.
  • [in] width – смещение верхнего порогового значения относительно нижнего, в страницах памяти. Сумма threshold и width дает верхнее пороговое значение.

Возвращаемые значения

В случае успеха возвращает rcOk, иначе возвращает код ошибки.

Если пороговые значения уже установлены, возвращает rcAlreadyDone.

KnPmmWsClearThreshold()

Назначение

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

Параметры

  • [in] ws – дескриптор рабочего набора.

Возвращаемые значения

В случае успеха возвращает rcOk, иначе возвращает код ошибки.

В начало