Перейти к содержимому

Virtual memory что это

  • автор:

Виртуальная память

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

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

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

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

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

Microsoft Windows и Windows NT

Область жестого диска, предназначенная для свопинга располагается в отдельном файле (Microsoft Windows, Windows NT), который называется файл подкачки.

Файл подкачки (swap-файл, рaging file) – это область на жестком диске, которую операционная система использует в качестве виртуальной памяти. Физически файл подкачки – это специальный файл, размещающийся на одном или нескольких дисках компьютера и предназначенный для (временного) хранения страниц виртуальной памяти, который располагается в корне жесткого диска с установленной системой и называется pagefile.sys.

Чем больше физический объем оперативной памяти, тем меньший объем файла подкачки необходим, и тем реже Windows приходится прибегать к его использованию.

Но, установить действительно необходимый объем swap-файла, можно лишь при помощи его мониторинга.

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

По умолчанию, Windows создает динамически изменяемый файл подкачки, но у этого подхода есть несколько существенных недостатков. А именно: при увеличении файла подкачки операционная система «дописывает» его на свободные места, что приводит к фрагментации диска и фрагментации самого swap-файла, а это уж совсем нежелательно, поскольку доступ к нему должен осуществляться с максимально возможной скоростью.

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

Применение механизма виртуальной памяти позволяет:

Виртуальная память на ПК может быть организована одним из следующих способов:

Оперативная память делится на страницы: области памяти фиксированной длины (например, 4096 байт), которые являются минимальной единицей выделяемой памяти (то есть даже запрос на 1 байт от приложения приведёт к выделению ему страницы памяти). Процесс обращается к памяти с помощью адреса виртуальной памяти, который содержит в себе номер страницы и смещение внутри страницы. Операционная система преобразует виртуальный адрес в физический, при необходимости подгружая страницу с жёсткого диска в оперативную память. При запросе на выделение памяти операционная система может «сбросить» на жёсткий диск страницы, к которым давно не было обращений. Критические данные (например, код запущенных и работающих программ, код и память ядра системы) обычно находятся в оперативной памяти (исключения существуют, однако они не касаются той части, которая отвечает за использование файла подкачки).

Механизм организации виртуальной памяти, при котором виртуальное пространство делится на части произвольного (но всегда кратного степени двойки) размера — сегменты. Благодаря этому устраняется один из крупных недостатков страничного механизма — внутренняя фрагментация памяти (то есть наличие большого количества неиспользованных участков памяти внутри страниц). Однако, сегментный механизм приводит к внешней фрагментации памяти (то есть наличию большого количества мелких неиспользованных участков памяти между сегментами). Для каждого сегмента, как и для страницы, могут быть назначены права доступа к нему пользователя и его процессов.

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

Функции виртуальной памяти

Функции виртуальной памяти позволяют процессу управлять или определять состояние страниц в своем виртуальном адресном пространстве. Они могут выполнять следующие операции:

  • Резервируйте диапазон виртуального адресного пространства процесса. Резервирование адресного пространства не выделяет физическое хранилище, но не позволяет другим операциям выделения использовать указанный диапазон. Это не влияет на виртуальные адресные пространства других процессов. Резервирование страниц предотвращает неупотребленное использование физического хранилища, позволяя процессу резервировать диапазон своего адресного пространства, в который может расти динамическая структура данных. Процесс может выделить физическое хранилище для этого пространства по мере необходимости.
  • Зафиксируйте диапазон зарезервированных страниц в виртуальном адресном пространстве процесса, чтобы физическое хранилище (в ОЗУ или на диске) было доступно только процессу выделения.
  • Укажите доступ для чтения и записи, доступ только для чтения или отсутствие доступа для диапазона зафиксированных страниц. Это отличается от стандартных функций выделения, которые всегда выделяют страницы с доступом на чтение и запись.
  • Освободите диапазон зарезервированных страниц, делая диапазон виртуальных адресов доступным для последующих операций выделения вызывающим процессом.
  • Отмените фиксацию диапазона зафиксированных страниц, освобождая их физическое хранилище и делая его доступным для последующего выделения любым процессом.
  • Заблокируйте одну или несколько страниц зафиксированной памяти в физической памяти (ОЗУ), чтобы система не переключила страницы на файл подкачки.
  • Получение сведений о диапазоне страниц в виртуальном адресном пространстве вызывающего процесса или указанного процесса.
  • Изменение защиты доступа для указанного диапазона зафиксированных страниц в виртуальном адресном пространстве вызывающего процесса или указанного процесса.

Дополнительные сведения см. в следующих разделах:

  • Выделение виртуальной памяти
  • Сравнение методов выделения памяти
  • Освобождение виртуальной памяти
  • Работа со страницами
  • Функции управления памятью

Виртуальная память — Virtual memory

Виртуальная память объединяет активную RAM и неактивную память на DASD для формирования большого диапазона непрерывных адресов.

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

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

  • 1 Свойства
  • 2 Использование
  • 3 История
  • 4 Выгружаемая виртуальная память
    • 4.1 Таблицы страниц
    • 4.2 Супервизор пейджинга
    • 4.3 Закрепленные страницы
      • 4.3.1 Виртуально-реальная операция

      Свойства

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

      виртуализацию памяти можно рассматривать как Обобщение концепции виртуальной памяти.

      Использование

      Виртуальная память является неотъемлемой частью современной компьютерной архитектуры ; реализации обычно требуют аппаратной поддержки, обычно в форме блока управления памятью, встроенного в CPU. Хотя это и не обязательно, эмуляторы и виртуальных машин могут использовать аппаратную поддержку для повышения производительности своих реализаций виртуальной памяти. Следовательно, более старые операционные системы, например, для мэйнфреймов 1960-х годов и для персональных компьютеров с начала до середины 1980-х годов (например, DOS ), как правило, не имеют виртуальных функциональность памяти, хотя заметными исключениями для мэйнфреймов 1960-х годов являются:

      • Atlas Supervisor для Atlas
      • THE мультипрограммная система для Electrologica X8 (виртуальная память на основе программного обеспечения без аппаратной поддержки)
      • MCP для BurroughsB5000
      • MTS, TSS / 360 и CP / CMS для IBM System / 360 Model 67
      • Multics для GE 645
      • Операционная система с разделением времени для RCA Spectra 70 / 46

      и операционная система для Apple Lisa являются примером операционной системы для персонального компьютера 1980-х годов, которая имеет виртуальную память.

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

      Большинство современных операционных систем, поддерживающих виртуальную память, также запускают каждый процесс в своем собственном выделенном адресном пространстве. Таким образом, кажется, что каждая программа имеет единственный доступ к виртуальной памяти. Однако некоторые старые операционные системы (такие как OS / VS1 и OS / VS2 SVS ) и даже современные (например, IBM i ) являются Операционные системы с единым адресным пространством, которые запускают все процессы в едином адресном пространстве, состоящем из виртуализированной памяти.

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

      История

      В 1940-х и 1950-х годах все более крупные программы должны были содержать логику для управления первичной и вторичной памятью, такую ​​как наложение. Поэтому виртуальная память была введена не только для расширения первичной памяти, но и для того, чтобы сделать такое расширение максимально простым для использования программистами. Чтобы обеспечить возможность мультипрограммирования и многозадачности, многие ранние системы разделяли память между несколькими программами без виртуальной памяти, например ранние модели PDP-10 через регистры.

      Утверждение, что концепция виртуальной памяти была впервые разработана немецким физиком в Техническом университете Берлина в 1956 году в его докторской диссертации «Логический дизайн цифрового компьютера с несколькими Асинхронные вращающиеся барабаны и автоматическая высокоскоростная работа с памятью не подлежат тщательной проверке. Компьютер, предложенный Гюнчем (но так и не построенный), имел адресное пространство из 10 слов, которые точно отображались на 10 слов барабанов, то есть адреса были реальными адресами, и не было формы косвенного отображения, ключевой особенности виртуальной памяти.. Гюнч действительно изобрел форму кэш-памяти, поскольку его высокоскоростная память была предназначена для хранения копий некоторых блоков кода или данных, взятых с барабанов. Более того, он написал (как указано в переводе): «Программисту не обязательно уважать существование первичной памяти (ему даже не нужно знать, что она существует), поскольку существует только один вид адресов (sic), по которым можно программировать как если бы было только одно хранилище ». Именно так обстоит дело в компьютерах с кэш-памятью, одним из первых коммерческих примеров которых была IBM System / 360 Model 85. В Model 85 все адреса были реальными адресами, относящимися к основному хранилищу ядра. Хранилище полупроводникового кэша, невидимое для пользователя, содержало содержимое частей основного хранилища, используемых текущей выполняющейся программой. Это в точности аналогично системе Güntsch, разработанной как средство повышения производительности, а не для решения проблем, связанных с мультипрограммированием.

      Первая настоящая система виртуальной памяти была реализована в Манчестерском университете для создания одноуровневой системы хранения в составе компьютера Atlas. Он использовал механизм пейджинга для сопоставления виртуальных адресов, доступных программисту, с реальной памятью, которая состояла из 16 384 слов первичной основной памяти с дополнительными 98 304 словами вторичной барабанная память. Первый Атлас был введен в эксплуатацию в 1962 году, но к 1959 году были разработаны рабочие прототипы системы разбиения на страницы. В 1961 году Burroughs Corporation независимо выпустила первый коммерческий компьютер с виртуальной памятью, B5000, с сегментация, а не разбиение на страницы.

      Прежде чем виртуальная память могла быть реализована в основных операционных системах, необходимо было решить множество проблем. Для динамической трансляции адресов требовалось дорогостоящее и сложное в сборке специализированное оборудование; начальные реализации немного замедляли доступ к памяти. Были опасения, что новые общесистемные алгоритмы, использующие вторичное хранилище, будут менее эффективными, чем ранее использовавшиеся алгоритмы для конкретных приложений. К 1969 году споры о виртуальной памяти для коммерческих компьютеров закончились; исследовательская группа IBM под руководством Дэвида Сейра показала, что их система наложения виртуальной памяти стабильно работает лучше, чем лучшие системы с ручным управлением. На протяжении 1970-х годов серии IBM 370, работающие с их операционными системами на основе виртуальных хранилищ, предоставляли бизнес-пользователям средства для миграции нескольких старых систем на более мощные мэйнфреймы с меньшим количеством операций, которые имели улучшенное соотношение цена / производительность. Первым миникомпьютером, который представил виртуальную память, был норвежский NORD-1 ; в течение 1970-х годов другие миникомпьютеры реализовали виртуальную память, особенно модели VAX, работающие под управлением VMS.

      . Виртуальная память была представлена ​​в архитектуре x86 с защищенным режимом процессора Intel 80286, но его метод перестановки сегментов плохо масштабируется для больших размеров сегментов. Intel 80386 представил поддержку подкачки под существующим уровнем сегментации, позволяя исключение ошибки страницы связываться с другими исключениями без двойной ошибки. Однако загрузка дескрипторов сегментов была дорогостоящей операцией, из-за которой разработчики операционных систем полагались строго на разбиение по страницам, а не на их сочетание и сегментацию.

      Страничная виртуальная память

      Почти все текущие реализации виртуальной памяти делят виртуальное адресное пространство на страницы, блоки смежных адресов виртуальной памяти. Страницы в современных системах обычно имеют размер не менее 4 килобайт ; системы с большими диапазонами виртуальных адресов или объемами реальной памяти обычно используют страницы большего размера.

      Таблицы страниц

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

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

      Некоторые более ранние системы с меньшим объемом реальной памяти, такие как SDS 940, использовали регистры страниц вместо таблиц страниц в памяти для преобразования адресов.

      Супервизор пейджинга

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

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

      Закрепленные страницы

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

      Некоторые страницы могут быть закреплены на короткие периоды времени, другие могут быть закреплены на длительные периоды времени, а третьи могут потребовать постоянного закрепления. Например:

      • Код супервизора подкачки и драйверы для вторичных запоминающих устройств, на которых находятся страницы, должны быть постоянно закреплены, иначе подкачка даже не будет работать, потому что необходимый код не будет доступен.
      • Время -зависимые компоненты могут быть закреплены, чтобы избежать переменных задержек подкачки.
      • Буферы данных, к которым напрямую обращаются периферийные устройства, использующие прямой доступ к памяти или каналы ввода / вывода, должны находятся на закрепленных страницах, пока выполняется операция ввода-вывода, поскольку такие устройства и шины , к которым они подключены, ожидают найти буферы данных, расположенные по адресам физической памяти; независимо от того, имеет ли шина блок управления памятью для ввода-вывода, передача не может быть остановлена ​​при возникновении ошибки страницы и затем перезапущена после обработки ошибки страницы.

      В операционных системах IBM для System / 370 и последующих системах термин «фиксированный», и такие страницы могут быть фиксированными на длительный срок, или могут быть фиксированными на короткий срок, или могут быть нефиксированными (т. Е. Перелистываемыми). Структуры управления системой часто являются фиксированными на длительный срок (измеряются во времени настенных часов, т. Е. Время измеряется в секундах, а не в долях одной секунды), тогда как буферы ввода / вывода обычно фиксируются на короткий срок (обычно измеряются в значительных долях секунды). меньше времени настенных часов, возможно, на десятки миллисекунд). Действительно, ОС имеет специальное средство для «быстрого исправления» этих краткосрочных фиксированных буферов данных (исправление, которое выполняется, не прибегая к трудоемкой инструкции вызова супервизора ).

      Multics использовала термин «проводной». OpenVMS и Windows относятся к страницам, временно сделанным без страницы (как для буферов ввода-вывода), как к «заблокированным», и просто «без страницы» для тех, которые никогда не доступны для страницы. Единая спецификация UNIX также использует термин «заблокирован» в спецификации для mlock () , как и mlock() страницы руководства во многих Unix-подобных системах.

      Виртуально-реальная операция

      В OS / VS1 и аналогичных операционных системах некоторые части системной памяти управляются в «виртуально-реальном» режиме, называемом «V = R «. В этом режиме каждому виртуальному адресу соответствует один и тот же реальный адрес. Этот режим используется для механизмов прерываний, для супервизора подкачки и таблиц страниц в старых системах, а также для прикладных программ, использующих нестандартное управление вводом-выводом. Например, IBM z / OS имеет 3 режима (виртуально-виртуальный, виртуально-реальный и виртуальный-фиксированный).

      Thrashing

      Когда разбиение на страницы и страница Если используется кража, может возникнуть проблема, называемая «переброс », при которой компьютер тратит недопустимо большое количество времени на передачу страниц в и из резервного хранилища, что замедляет полезную работу. Рабочий набор задачи — это минимальный набор страниц, который должен находиться в памяти, чтобы она могла успешно выполняться. Пробуксовка происходит, когда недостаточно памяти для хранения рабочих наборов всех активных программ. Добавление реальной памяти — это самый простой ответ, но может помочь улучшение дизайна приложения, планирования и использования памяти. Еще одно решение — уменьшить количество активных задач в системе. Это снижает потребность в реальной памяти за счет замены всего рабочего набора одного или нескольких процессов.

      Сегментированная виртуальная память

      Некоторые системы, такие как Burroughs B5500, используют сегментацию вместо разбиения по страницам, разделяя виртуальные адресные пространства на участки переменной длины. сегменты. Виртуальный адрес здесь состоит из номера сегмента и смещения внутри сегмента. Intel 80286 поддерживает аналогичную схему сегментации в качестве опции, но используется редко. Сегментацию и разбиение на страницы можно использовать вместе, разделив каждый сегмент на страницы; системы с такой структурой памяти, такие как Multics и IBM System / 38, обычно имеют преобладание подкачки, сегментация обеспечивает защиту памяти.

      В Intel Для процессоров 80386 и более поздних версий IA-32 сегменты находятся в 32-битном линейном адресном пространстве с разбивкой на страницы. Сегменты можно перемещать в это пространство и из него; страницы могут «постранично» входить и выходить из основной памяти, обеспечивая два уровня виртуальной памяти; лишь немногие операционные системы, если таковые имеются, используют только разбиение на страницы. Ранние решения виртуализации x86 без аппаратной поддержки сочетали разбиение на страницы и сегментацию, поскольку разбиение на страницы x86 предлагает только два домена защиты, тогда как стеку VMM / гостевой ОС / гостевых приложений требуется три. Разница между системами подкачки и сегментации не только в разделении памяти; сегментация видна пользовательским процессам как часть семантики модели памяти. Следовательно, вместо памяти, которая выглядит как одно большое пространство, она разбита на несколько пространств.

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

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

      Обмен адресного пространства

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

      IBM MVS, от OS / VS2 Release 2 до z / OS, позволяет пометить адресное пространство как не подлежащее замене; при этом никакие страницы не закрепляются в адресном пространстве. Это можно сделать во время выполнения задания, введя имя подходящей основной программы в Таблице свойств программы с флагом отмены замены. Кроме того, привилегированный код может временно сделать адресное пространство недоступным для замены с помощью инструкции SYSEVENT Supervisor Call (SVC); некоторые изменения в свойствах адресного пространства требуют, чтобы ОС заменила его, а затем вернула обратно, используя SYSEVENT TRANSWAP.

      См. также

      Wikisource содержит исходный текст, относящийся к этой статье: Игра подкачки
      • Дизайн ЦП
      • Страница (вычисления)
      • Алгоритмы кеширования
      • Распределение памяти
      • Управление памятью (операционные системы)
      • Защищенный режим, x86, который позволяет использовать виртуальную память.
      • Закрепленная память CUDA
      • Архитектура гетерогенной системы, серия спецификаций, предназначенных для объединения оперативной памяти и памяти карты Graphic в виртуальную

      Дополнительная литература

      • Hennessy, Джон Л.; и Паттерсон, Дэвид А.; Архитектура компьютера, количественный подход (ISBN 1-55860-724-2 )

      Примечания

      Ссылки

      Внешние ссылки

      • Операционные системы: три Easy Pieces, Ремзи Х. Арпачи-Дюссо и Андреа К. Арпачи-Дюссо. Книги Арпачи-Дюссо, 2014. Соответствующие главы: Адресные пространстваПеревод адресовСегментацияВведение в разбиение на страницыTLBРасширенные таблицы страницОбмен: механизмыОбмен: политики
      • «Время- Совместное использование программ супервизора » Майкла Т. Александера в книге« Дополнительные темы системного программирования », Летняя конференция инженеров Мичиганского университета 1970 г. (пересмотренная в мае 1971 г.), сравнивает подходы к планированию и распределению ресурсов, включая виртуальную память и подкачку, используемые в четырех мэйнфреймах операционные системы: CP-67, TSS / 360, MTS и Multics.
      • LinuxMM: управление памятью Linux.
      • Рождение Linux Ядро , обсуждение в списке рассылки.
      • Менеджер виртуальной памяти в Wind ows NT, Рэнди Кэт, Microsoft Developer Network Technology Group, 12 декабря 1992 г. на Wayback Machine (архивировано 22 июня 2010 г.)

      Управление ОЗУ, виртуальной памятью, файлом страниц и памятью в Windows

      Эта статья содержит основные сведения о реализации виртуальной памяти в 32-разрядных версиях Windows.

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

      Виртуальная память всегда используется, даже если объем памяти, необходимый для всех выполняющиеся процессы, не превышает объем ОЗУ, установленный в системе.

      Процессы и адресные пространства

      Всем процессам (например, исполняемым файлам приложений), работающим в 32-разрядных версиях Windows, назначаются адреса виртуальной памяти (виртуальное адресное пространство) в диапазоне от 0 до 4 294 967 295 (2*32-1 = 4 ГБ), независимо от объема ОЗУ, установленного на компьютере.

      В конфигурации Windows по умолчанию 2 гигабайта (ГБ) этого виртуального адресного пространства назначаются для частного использования каждого процесса, а остальные 2 ГБ совместно используются всеми процессами и операционной системой. Как правило, приложения (например, Блокнот, Word, Excel и Acrobat Reader) используют только часть 2 ГБ частного адресного пространства. Операционная система назначает кадры страниц ОЗУ только используемым страницам виртуальной памяти.

      Расширение физических адресов (PAE) — это функция 32-разрядной архитектуры Intel, которая расширяет адрес физической памяти (ОЗУ) до 36 бит. PAE не изменяет размер виртуального адресного пространства (который остается на уровне 4 ГБ), а только объем фактического объема ОЗУ, который может быть устранен процессором.

      Преобразование между 32-разрядным адресом виртуальной памяти, используемым кодом, который выполняется в процессе, и 36-разрядным ОЗУ-адресом обрабатывается автоматически и прозрачно компьютерным оборудованием в соответствии с таблицами преобразования, которые обслуживаются операционной системой. Любая страница виртуальной памяти (32-разрядный адрес) может быть связана с любой физической страницей ОЗУ (36-разрядный адрес).

      В следующем списке описывается объем ОЗУ, поддерживаемый различными версиями и выпусками Windows (по данным на май 2010 г.):

      Версия Windows ОЗУ
      Windows NT 4.0 4 ГБ
      Windows 2000 Professional 4 ГБ
      Windows 2000 Standard Server 4 ГБ
      Windows 2000 Advanced Server 8 ГБ
      Windows 2000 Datacenter Server 32 ГБ
      Windows XP Professional 4 ГБ
      Windows Server 2003 Web Edition 2 ГБ
      Windows Server 2003 Standard Edition 4 ГБ
      Windows Server 2003 выпуск Enterprise 32 ГБ
      Windows Server 2003 Datacenter Edition 64 ГБ
      Windows Vista 4 ГБ
      Windows Server 2008 Standard 4 ГБ
      Windows Server 2008 Enterprise 64 ГБ
      Windows Server 2008 Datacenter 64 ГБ
      Windows 7 4 ГБ

      Файл подкачки

      ОЗУ — это ограниченный ресурс, тогда как в большинстве практических целей виртуальная память не ограничена. Может быть много процессов, и каждый процесс имеет собственное 2 ГБ частного виртуального адресного пространства. Если память, используемая всеми существующими процессами, превышает объем доступной ОЗУ, операционная система перемещает страницы (4 КБ) одного или нескольких виртуальных адресных пространств на жесткий диск компьютера. Это освобождает кадр ОЗУ для других вариантов использования. В системах Windows эти страницы с разбиения на страницы хранятся в одном или нескольких файлах (Pagefile.sys файлах) в корне секции. В каждом разделе диска может быть один такой файл. Расположение и размер файла страницы настраиваются в свойствах системы (нажмите кнопку «Дополнительно «, нажмите кнопку «Производительность » и нажмите кнопку «Параметры «).

      Пользователи часто задают вопрос о том, насколько большим должен быть файл страницы? Нет единого ответа на этот вопрос, так как он зависит от объема установленной ОЗУ и объема виртуальной памяти, требуемого для рабочей нагрузки. Если других сведений нет, рекомендуется использовать стандартную рекомендацию в 1,5 раза больше установленной ОЗУ. В серверных системах обычно требуется достаточный объем ОЗУ, чтобы никогда не было нехватки памяти и чтобы файл страницы не использовался. В этих системах это может не оказаться полезной целью для обслуживания большого файла страниц. С другой стороны, если место на диске достаточное, обслуживание большого файла страницы (например, в 1,5 раза больше установленного ОЗУ) не приводит к проблеме, а также устраняет необходимость беспокоиться о том, насколько большим будет его размер.

      Производительность, ограничения архитектуры и ОЗУ

      В любой компьютерной системе по мере увеличения нагрузки (количество пользователей, объем работ) производительность снижается, но нелинейно. Любое увеличение нагрузки или спроса за определенный момент приводит к значительному снижению производительности. Это означает, что некоторые ресурсы в критическом нехватке и стали узким местом.

      В какой-то момент ресурс, который находится в коротком ресурсе, не может быть увеличен. Это означает, что достигнут предел архитектуры . Ниже перечислены некоторые часто сообщаемые ограничения архитектуры в Windows.

      • 2 ГБ общего виртуального адресного пространства для системы (ядра)
      • 2 ГБ частного виртуального адресного пространства на процесс (пользовательский режим)
      • 660 МБ системного хранилища PTE (Windows Server 2003 и более ранних версий)
      • 470 МБ хранилища страничного пула (Windows Server 2003 и более ранних версий)
      • 256 МБ хранилища невыплаченного пула (Windows Server 2003 и более ранние версии)

      Это относится к Windows Server 2003, но также может применяться к Windows XP и Windows 2000. Однако Windows Vista, Windows Server 2008 и Windows 7 не используют эти ограничения архитектуры. Ограничения на память пользователя и ядра (числа 1 и 2 здесь) одинаковы, но ресурсы ядра, такие как PTE и различные пулы памяти, являются динамическими. Эта новая функция позволяет использовать как страницу, так и невыплаченную память. Это также позволяет PTE и пулу сеансов превышать ограничения, описанные ранее, до точки исчерпания всего ядра.

      Часто используемые и заключенные в кавычки операторы, например:

      При использовании сервера терминалов 2 ГБ общего адресного пространства будут полностью использоваться до того, как будет использовано 4 ГБ ОЗУ.

      В некоторых случаях это может быть верно. Однако необходимо отслеживать систему, чтобы узнать, применимы ли они к конкретной системе. В некоторых случаях эти инструкции являются выводами из конкретных сред Windows NT 4.0 или Windows 2000 и не обязательно применяются к Windows Server 2003. В Windows Server 2003 были внесены значительные изменения, чтобы снизить вероятность того, что эти ограничения архитектуры будут фактически достигнуты на практике. Например, некоторые процессы, которые находились в ядре, были перемещены в процессы без ядра, чтобы уменьшить объем памяти, используемой в общем виртуальном адресном пространстве.

      Мониторинг использования ОЗУ и виртуальной памяти

      Монитор производительности является средством мониторинга производительности системы и определения расположения узкого места. Чтобы начать Монитор производительности, нажмите кнопку «Панель управления», «Администрирование» и дважды щелкните Монитор производительности. Ниже приведена сводка по некоторым важным счетчикам и их сведениям:

      • Память, зафиксированные байты: этот счетчик является мерой спроса на виртуальную память. Здесь показано, сколько байтов было выделено процессами и в каких операционных системах зафиксирован кадр страницы ОЗУ или слот страницы в файле страниц (или, возможно, и то, и другое). По мере увеличения числа зафиксированных байтов, превышающее объем доступной ОЗУ, разбиение по страницам увеличится, а используемый размер файла страницы также увеличится. В определенный момент действие разбиения на страницы начинает значительно влиять на производительность.
      • Process, Working Set, _Total: этот счетчик является мерой виртуальной памяти в активном использовании . Этот счетчик показывает, сколько ОЗУ требуется для того, чтобы виртуальная память, используемая для всех процессов, была в ОЗУ. Это значение всегда кратно 4096, то есть размер страницы, используемый в Windows. Так как потребность в виртуальной памяти выходит за пределы доступной ОЗУ, операционная система настраивает объем виртуальной памяти процесса в рабочем наборе, чтобы оптимизировать доступное использование ОЗУ и свести к минимуму разбиение по страницам.
      • Файл разбиения на страницы, %pagefile используется: этот счетчик представляет собой меру фактического использования файла страницы. Используйте этот счетчик, чтобы определить, является ли файл pagefile соответствующим размером. Если этот счетчик достигает 100, файл страницы заполнен, и работа будет остановлена. В зависимости от нестрогости рабочей нагрузки, возможно, файл страницы будет достаточно большим, чтобы он использовался не более чем на 50–075 %. Если используется большая часть файла страниц, наличие нескольких файлов на разных физических дисках может повысить производительность.
      • Память, страницы/с. Этот счетчик является одной из наиболее распространенных мер. Высокое значение этого счетчика не обязательно означает, что узкое место производительности связано с нехваткой ОЗУ. Операционная система использует систему подкачки для других целей, кроме переключения страниц из-за превышения объема памяти.
      • Память, выходные данные страниц/с. Этот счетчик показывает, сколько страниц виртуальной памяти было записано на файл страницы, чтобы освободить кадры страниц ОЗУ для других целей каждую секунду. Это лучший счетчик для отслеживания, если вы подозреваете, что разбиение на страницы является узким местом производительности. Даже если количество зафиксированных байтов больше установленного ОЗУ, если выходные данные страниц в секунду в большинстве раз низкие или нулевые, существенной проблемы с производительностью из-за нехватки ОЗУ нет.
      • Память, байты кэша, память, невыплаченные байты пула, память, байты на странице пула, память, общее количество байтов системного кода, память, общее количество байтов системного драйвера: Сумма этих счетчиков представляет собой меру того, сколько из 2 ГБ общей части виртуального адресного пространства размером 4 ГБ фактически используется. Используйте их, чтобы определить, достигает ли ваша система одного из описанных выше ограничений архитектуры.
      • Память, доступные МБ. Этот счетчик измеряет объем ОЗУ, доступный для удовлетворения требований к виртуальной памяти (новые выделения или восстановление страницы из файла страницы). При нехватке ОЗУ (например, зафиксированные байты больше установленной ОЗУ) операционная система попытается сохранить определенную часть установленной ОЗУ доступной для немедленного использования путем копирования страниц виртуальной памяти, которые не используются в файле страниц. Таким образом, этот счетчик не достигнет нуля и не обязательно является хорошим признаком того, что в системе не достаточно ОЗУ.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *