stringtranslate.com

Рабочий набор

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

Определение

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

Обоснование

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

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

Часто на сильно загруженном компьютере в очереди находится так много процессов, что если бы всем процессам было разрешено работать в течение одного временного интервала планирования , они бы ссылались на большее количество страниц, чем имеется оперативной памяти, что привело бы к « зависанию » компьютера.

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

Другими словами, стратегия рабочего набора предотвращает пробуксовку , сохраняя при этом максимально возможную степень многопрограммирования. Таким образом, она оптимизирует использование ЦП и пропускную способность.

Выполнение

Главным препятствием в реализации модели рабочего набора является отслеживание рабочего набора. Окно рабочего набора — это движущееся окно. При каждом обращении к памяти новая ссылка появляется на одном конце, а самая старая ссылка исчезает на другом конце. Страница находится в рабочем наборе, если на нее есть ссылка в окне рабочего набора.

Чтобы избежать накладных расходов на ведение списка последних k страниц, на которые были сделаны ссылки, рабочий набор часто реализуется путем отслеживания времени t последней ссылки и рассмотрения рабочего набора как всех страниц, на которые были сделаны ссылки в течение определенного периода времени.

Рабочий набор не является алгоритмом замены страниц , но алгоритмы замены страниц могут быть разработаны для удаления только тех страниц, которые не находятся в рабочем наборе для конкретного процесса. Одним из примеров является модифицированная версия алгоритма часов , называемая WSClock.

Варианты

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

Аналоги рабочего набора существуют для других ограниченных ресурсов, наиболее значимых процессов . Если набор процессов требует частого взаимодействия между несколькими процессами, то он имеетрабочий набор процесса , который необходимоперепланироватьдля продолжения:[3]

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

Если процессы не запланированы одновременно — например, если есть два процесса, но только одно ядро, на котором они выполняются, — то процессы могут продвигаться только со скоростью одного взаимодействия за один промежуток времени.

Другие ресурсы включают дескрипторы файлов или сетевые сокеты — например, копирование одного файла в другой проще всего выполнить с двумя дескрипторами файлов: один для ввода, один для вывода, и, таким образом, имеет размер «рабочего набора дескрипторов файлов», равный двум. Если доступен только один дескриптор файла, копирование все равно можно выполнить, но для этого требуется получить дескриптор файла для ввода, прочитать из него (например, в буфер), освободить его, затем получить дескриптор файла для вывода, записать в него, освободить его, затем снова получить дескриптор входного файла и повторить. Аналогично серверу может потребоваться много сокетов, и если он ограничен, ему придется неоднократно освобождать и повторно получать сокеты. Вместо того чтобы прокручивать, эти ресурсы обычно требуются для программы, и если она не может получить достаточно ресурсов, она просто терпит неудачу.

Смотрите также

Ссылки

  1. ^ Деннинг, Питер Дж. (2021-02-02). «Аналитика рабочего набора». ACM Computing Surveys . 53 (6). Ассоциация вычислительной техники (ACM): 1–36. doi :10.1145/3399709. ISSN  0360-0300.
  2. ^ Деннинг, Питер Дж. (1968). "Модель рабочего набора для поведения программы" (PDF) . Сообщения ACM . 11 (5): 323–333. doi :10.1145/363095.363141. S2CID  207669410.
  3. ^ Оустерхаут, Дж. К. (1982). «Методы планирования для параллельных систем» (PDF) . Труды Третьей международной конференции по распределенным вычислительным системам : 22–30.

Дальнейшее чтение