Эффективность виртуальной памяти

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

Хотя общее количество различных страниц, на которые ссылаются программы в те­чение всего периода выполнения, может превысить весь объем физической оперативной памяти, тем не менее, принцип локальности предполагает, что в каждый момент времени они будут работать с меньшим набором активных страниц (active page), на­зываемым рабочим набором (working set), или резидентным набором (resident set) страниц. После начальных затрат на размещение рабочего набора в реальной оперативной памяти после­дующие объекты ссылок находятся в рабочем наборе и не будут сопровождаться до­полнительным обменом с диском.

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

7.5. Достоинства виртуальной памяти

Упрощение совместного использования оперативной памяти

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

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: