Рабочее множество

Материал из Википедии — свободной энциклопедии
(перенаправлено с «Working Set»)
Перейти к навигации Перейти к поиску

Рабочее множество (англ. working set) — понятие в информатике, определяющее количество памяти, требующееся процессу в заданный интервал времени.

Другими словами, Рабочий набор процесса — это набор страниц в виртуальном адресном пространстве процесса, которые в настоящий момент находятся в физической памяти[1] (отображены на адресное пространство процесса).

Определение[править | править код]

Питер Деннинг[en] (1968) определяет «рабочее множество информации процесса в момент времени как совокупность информации, на которую ссылается процесс в течение интервала времени »[2]. Обычно за единицу информации берётся страница памяти. Предлагается считать рабочее множество приближенной оценкой множества страниц, к которым процесс обратится в будущем (например, в течение следующих единиц времени), и, что более важно, — показателем того, какие страницы следует сохранить в основной памяти, чтобы выполнение процесса осуществлялось быстрее.

Обоснование[править | править код]

Для производительности имеет значение, какие именно страницы останутся в основной памяти (в отличие от страниц, выгружаемых во вспомогательную память): если оставить в основной памяти слишком много страниц, принадлежащих процессу, то снизится количество процессов, которые можно выполнять одновременно. Если оставить в основной памяти слишком мало страниц процесса, то частота ошибок страниц резко возрастёт и число выполняющихся в данный момент активных процессов будет стремиться к нулю.

Согласно модели рабочего множества, процесс может находиться в ОЗУ тогда и только тогда, когда множество всех его страниц, используемых в настоящее время (или множество последних по времени использования страниц, которое часто используется как его приближение) могут находиться в ОЗУ. Модель работает по принципу «всё или ничего», то есть, если число нужных процессу страниц памяти растёт и в ОЗУ нет свободного места, то процесс выгружается из памяти целиком, чтобы освободить память для использования другими процессами.

Часто сильно загруженный компьютер может иметь столько процессов в очереди, что, если позволить им запуститься в один и тот же квант времени, то объём памяти, на который они будут ссылаться, превысит объём ОЗУ, вследствие чего возникнет пробуксовка виртуальной памяти.

Выгрузка некоторых процессов из памяти приводит к тому, что выполнение всех процессов, включая даже временно выгруженные из памяти, завершится гораздо раньше, чем при попытке запустить все процессы одновременно. Выполнение процессов завершится гораздо раньше и по сравнению с последовательным запуском каждого процесса по одному, так как одновременное выполнение позволяет одним процессам выполняться в те моменты времени, когда другие ждут завершения доступа к жёсткому диску или другим глобальным ресурсам. Другими словами, стратегия рабочего множества предотвращает пробуксовку виртуальной памяти, сохраняя при этом высокую степень мультипрограммирования. Таким образом, эта стратегия оптимизирует загрузку и пропускную способность центрального процессора.

Реализация[править | править код]

Основная сложность в реализации описанной модели — это отслеживание рабочего множества. Для этого из всего потока обращений процесса к страницам памяти отслеживаются последние обращения за интервал времени , называемый окном рабочего множества. При каждом обращении к памяти новая ссылка на страницу добавляется в начало окна, а наиболее старая ссылка оказывается за его пределами. Страница считается принадлежащей рабочему множеству, если на неё есть ссылка в окне рабочего множества[3].

Чтобы избежать накладных расходов, связанных с хранением большого числа ссылок на страницы памяти, вычисление рабочего множества часто реализуется путём отслеживания времени последнего обращения к странице памяти. Страница считается принадлежащей рабочему множеству, если разница между текущим моментом времени и временем последнего обращения не превышает размера окна рабочего множества. Если эта разница превышает размер окна, страница может быть удалена.

Стратегия рабочего множества не является алгоритмом замены страниц, однако алгоритмы замены страниц могут учитывать рабочее множество процесса и не удалять принадлежащие ему страницы. Например, существует модифицированная версия алгоритма часов под названием WSClock.

См. также[править | править код]

Примечания[править | править код]

  1. mcleanbyron. Рабочий набор - Win32 apps (рус.). docs.microsoft.com. Дата обращения: 12 октября 2021. Архивировано 24 октября 2021 года.
  2. Denning, P.J. The working set model for program behavior // Communications of the ACM. — 1968. — Т. 11, вып. 5. — С. 323—333. — doi:10.1145/363095.363141. Архивировано 8 мая 2018 года.
  3. Jose Garrido, Richard Schlesinger, Kenneth Hoganson. Principles of Modern Operating Systems. — Jones & Bartlett Publishers, 2011. — С. 300. — 564 с. — ISBN 978-1-4496-2634-1.

Литература[править | править код]