Что такое виртуальная память
Обновлено: 21.11.2024
Виртуальная память является общей частью большинства операционных систем на настольных компьютерах. Он стал настолько распространенным, потому что дает пользователям большую выгоду по очень низкой цене.
Большинство современных компьютеров имеют от 64 до 128 мегабайт ОЗУ (оперативной памяти), доступной для использования ЦП (центральным процессором). Часто этого объема оперативной памяти недостаточно для одновременного запуска всех программ, которые большинство пользователей ожидают запустить. Например, если вы одновременно загружаете в оперативную память операционную систему Windows, программу электронной почты, веб-браузер и текстовый процессор, 64 мегабайта недостаточно, чтобы вместить все это. Если бы не было такой вещи, как виртуальная память, ваш компьютер должен был бы сказать: «Извините, вы не можете больше загружать приложения. Пожалуйста, закройте приложение, чтобы загрузить новое». С помощью виртуальной памяти компьютер может искать области оперативной памяти, которые в последнее время не использовались, и копировать их на жесткий диск. Это освобождает место в оперативной памяти для загрузки нового приложения. Поскольку он делает это автоматически, вы даже не знаете, что это происходит, и это заставляет ваш компьютер чувствовать, что у него неограниченное пространство ОЗУ, даже если на нем установлено всего 32 мегабайта. Поскольку место на жестком диске намного дешевле, чем микросхемы ОЗУ, виртуальная память также обеспечивает хорошую экономическую выгоду.
Область жесткого диска, в которой хранится образ ОЗУ, называется файлом подкачки. Он хранит страницы оперативной памяти на жестком диске, а операционная система перемещает данные туда и обратно между файлом подкачки и оперативной памятью. (На компьютере с Windows файлы подкачки имеют расширение .SWP.)
Конечно, скорость чтения/записи на жестком диске намного ниже, чем на оперативной памяти, а технология жесткого диска не предназначена для одновременного доступа к небольшим фрагментам данных. Если вашей системе приходится слишком сильно полагаться на виртуальную память, вы заметите значительное падение производительности. Ключ в том, чтобы иметь достаточно оперативной памяти, чтобы обрабатывать все, над чем вы обычно работаете одновременно. Тогда единственный раз, когда вы «чувствуете» медлительность виртуальной памяти, — это небольшая пауза, возникающая при смене задач. Когда у вас достаточно оперативной памяти для ваших нужд, виртуальная память прекрасно работает. Если вы этого не сделаете, операционной системе придется постоянно обмениваться информацией между оперативной памятью и жестким диском. Это называется пробуксовкой, и из-за этого ваш компьютер может работать невероятно медленно.
Виртуальная память — это схема распределения памяти, в которой вторичная память может быть адресована так, как если бы она была частью основной памяти. Адреса, которые программа может использовать для ссылки на память, отличаются от адресов, которые система памяти использует для идентификации физических мест хранения, а сгенерированные программой адреса автоматически преобразуются в соответствующие машинные адреса.
Размер виртуального хранилища ограничен схемой адресации компьютерной системы, а объем доступной вторичной памяти не зависит от фактического количества мест основного хранилища.
- Все ссылки на память внутри процесса представляют собой логические адреса, которые динамически преобразуются в физические адреса во время выполнения. Это означает, что процесс может перемещаться в основную память и из нее таким образом, что он занимает разные места в основной памяти в разное время в ходе выполнения.
- Процесс может быть разбит на несколько частей, и эти части не должны постоянно находиться в основной памяти во время выполнения. Это позволяет сочетание динамического преобразования адресов во время выполнения и использования таблицы страниц или сегментов.
Если эти характеристики присутствуют, то нет необходимости, чтобы все страницы или сегменты присутствовали в основной памяти во время выполнения. Это означает, что необходимые страницы должны быть загружены в память всякий раз, когда это необходимо. Виртуальная память реализуется с использованием пейджинга по требованию или сегментации по требованию.
Пейджинг по запросу:
Процесс загрузки страницы в память по требованию (всякий раз, когда происходит сбой страницы) известен как пейджинг по запросу.
Процесс включает следующие этапы:
- Если ЦП пытается обратиться к странице, которая в данный момент недоступна в основной памяти, он генерирует прерывание, указывающее на ошибку доступа к памяти.
- ОС переводит прерванный процесс в состояние блокировки. Чтобы выполнение продолжилось, ОС должна загрузить требуемую страницу в память.
- ОС будет искать нужную страницу в логическом адресном пространстве.
- Требуемая страница будет перенесена из логического адресного пространства в физическое адресное пространство. Алгоритмы замены страницы используются для принятия решения о замене страницы в физическом адресном пространстве.
- Таблица страниц будет соответствующим образом обновлена.
- ЦП будет отправлен сигнал для продолжения выполнения программы, и он вернет процесс в состояние готовности.
Следовательно, всякий раз, когда происходит сбой страницы, операционная система выполняет эти шаги, и требуемая страница загружается в память.
- В основной памяти может храниться больше процессов: поскольку мы собираемся загружать только некоторые страницы любого конкретного процесса, остается место для большего количества процессов. Это приводит к более эффективному использованию процессора, поскольку более вероятно, что по крайней мере один из более многочисленных процессов будет находиться в состоянии готовности в любой конкретный момент времени.
- Процесс может быть больше, чем вся основная память: снимается одно из самых фундаментальных ограничений в программировании. Процесс, объем которого превышает основную память, может быть выполнен из-за подкачки по запросу. ОС сама загружает страницы процесса в основную память по мере необходимости.
- Это обеспечивает более высокий уровень многозадачности за счет использования меньшего объема доступной (основной) памяти для каждого процесса.
Время обслуживания ошибки страницы:
Время, необходимое для обслуживания ошибки страницы, называется временем обслуживания ошибки страницы. Время обслуживания ошибки страницы включает время, затраченное на выполнение всех шести вышеуказанных шагов.
Обмен:
Выключение процесса означает удаление всех его страниц из памяти или их пометку, чтобы они были удалены в ходе обычного процесса замены страниц. Приостановка процесса гарантирует, что он не сможет работать, пока он выгружен. Через некоторое время система переключает процесс обратно из вторичного хранилища в основную память. Когда процесс занят обменом страницами, такая ситуация называется перегрузкой.
Пробивка:
В любой момент времени в основной памяти находится лишь несколько страниц любого процесса, поэтому в памяти может храниться больше процессов. Кроме того, экономится время, поскольку неиспользуемые страницы не загружаются и не удаляются из памяти. Однако ОС должна хорошо разбираться в том, как она управляет этой схемой. В установившемся режиме практически вся основная память будет занята страницами процессов, так что процессор и ОС имеют прямой доступ к как можно большему количеству процессов. Таким образом, когда ОС загружает одну страницу, она должна выбрасывать другую. Если он выбрасывает страницу непосредственно перед тем, как ее использовать, то ему просто нужно будет получить эту страницу снова почти немедленно. Слишком много этого приводит к состоянию, называемому «Трэшинг». Система тратит большую часть своего времени на переключение страниц, а не на выполнение инструкций. Поэтому требуется хороший алгоритм замены страницы.
На приведенной диаграмме начальная степень мультипрограммирования до некоторой степени (лямбда), загрузка ЦП очень высока, а системные ресурсы используются на 100%. Но если мы еще больше увеличим степень мультипрограммирования, загрузка процессора резко упадет, и система будет тратить больше времени только на замену страниц, а время, затрачиваемое на выполнение процесса, увеличится. Такая ситуация в системе называется пробуксовкой.
-
Высокая степень мультипрограммирования: если количество процессов в памяти продолжает увеличиваться, количество кадров, выделенных каждому процессу, будет уменьшаться. Таким образом, для каждого процесса будет доступно меньше кадров. Из-за этого сбой страницы будет происходить чаще, и больше процессорного времени будет потрачено впустую только на загрузку и удаление страниц, а загрузка будет продолжать снижаться.
Например:
Пусть свободных кадров = 400
Случай 1: количество процессов = 100
Тогда каждый процесс получит 4 кадра.
Компьютер может адресовать больше памяти, чем физически установлено в системе. Эта дополнительная память на самом деле называется виртуальной памятью и представляет собой раздел жесткого диска, настроенный для эмуляции оперативной памяти компьютера.
Основное видимое преимущество этой схемы заключается в том, что программы могут занимать больше места, чем физическая память. Виртуальная память служит двум целям. Во-первых, это позволяет нам расширить использование физической памяти за счет использования диска. Во-вторых, это позволяет нам защитить память, поскольку каждый виртуальный адрес транслируется в физический адрес.
Ниже приведены ситуации, когда всю программу не требуется полностью загружать в оперативную память.
Процедуры обработки ошибок, написанные пользователем, используются только в случае возникновения ошибки в данных или вычислениях.
Некоторые параметры и функции программы могут использоваться редко.
Многим таблицам назначается фиксированный объем адресного пространства, хотя фактически используется лишь небольшой объем таблицы.
Возможность выполнения программы, которая лишь частично находится в памяти, может свести на нет многие преимущества.
Меньше операций ввода-вывода потребуется для загрузки или выгрузки каждой пользовательской программы в память.
Программа больше не будет ограничиваться объемом доступной физической памяти.
Каждая пользовательская программа может занимать меньше физической памяти, больше программ может выполняться одновременно с соответствующим увеличением загрузки ЦП и пропускной способности.
В современные микропроцессоры, предназначенные для универсального использования, блок управления памятью или MMU встроен в аппаратное обеспечение. Работа MMU заключается в преобразовании виртуальных адресов в физические адреса. Базовый пример приведен ниже —
Виртуальная память обычно реализуется путем подкачки по требованию. Он также может быть реализован в системе сегментации. Сегментация спроса также может использоваться для предоставления виртуальной памяти.
Пейджинг по требованию
Система подкачки по требованию очень похожа на систему подкачки с подкачкой, где процессы находятся во вторичной памяти, а страницы загружаются только по требованию, а не заранее. Когда происходит переключение контекста, операционная система не копирует страницы старой программы на диск или страницы новой программы в оперативную память. Вместо этого она просто начинает выполнять новую программу после загрузки первой страницы и извлекает ее. страницы программы, как на них ссылаются.
Во время выполнения программы, если программа ссылается на страницу, которая недоступна в основной памяти, поскольку она была недавно выгружена, процессор рассматривает эту недопустимую ссылку на память как ошибку страницы и передает управление от программы к операционная система запросит страницу обратно в память.
Преимущества
Ниже приведены преимущества пейджинга по запросу.
- Большая виртуальная память.
- Более эффективное использование памяти.
- Степень мультипрограммирования не ограничена.
Недостатки
Количество таблиц и нагрузка процессора на обработку страничных прерываний больше, чем в случае простых методов страничного управления.
Алгоритм замены страницы
Алгоритмы замены страниц — это методы, с помощью которых операционная система решает, какие страницы памяти следует выгружать и записывать на диск, когда необходимо выделить страницу памяти. Пейджинг происходит всякий раз, когда происходит сбой страницы, и свободная страница не может быть использована для учета распределения по причине того, что страницы недоступны или количество свободных страниц меньше, чем требуется.
При повторном обращении к странице, которая была выбрана для замены и была выгружена, она должна быть считана с диска, а это требует завершения ввода-вывода. Этот процесс определяет качество алгоритма замены страниц: чем меньше время ожидания загрузки страниц, тем лучше алгоритм.
Алгоритм замены страниц анализирует ограниченную информацию о доступе к страницам, предоставленную аппаратным обеспечением, и пытается выбрать, какие страницы следует заменить, чтобы свести к минимуму общее количество пропущенных страниц, при этом уравновешивая затраты на основное хранилище и процессорное время. самого алгоритма. Существует множество различных алгоритмов замены страниц. Мы оцениваем алгоритм, запуская его на определенной строке ссылки на память и вычисляя количество ошибок страниц,
Ссылочная строка
Строка ссылок на память называется ссылочной строкой. Строки ссылок генерируются искусственно или путем отслеживания данной системы и записи адреса каждой ссылки на память. Последний вариант приводит к большому количеству данных, где мы отмечаем две вещи.
Для заданного размера страницы нам нужно учитывать только номер страницы, а не весь адрес.
Если у нас есть ссылка на страницу p, то любые последующие ссылки на страницу p никогда не вызовут ошибку страницы. Страница p будет находиться в памяти после первого обращения; следующие ссылки не будут ошибкой.
Например, рассмотрим следующую последовательность адресов — 123 215 600 1234, 76, 96
Если размер страницы равен 100, то ссылочная строка будет 1,2,6,12,0,0
Алгоритм «первым пришел – первым обслужен» (FIFO)
Самая старая страница в оперативной памяти будет выбрана для замены.
Простота реализации, ведение списка, замена страниц в конце и добавление новых страниц в начале.
Оптимальный алгоритм страницы
Оптимальный алгоритм замены страниц имеет самый низкий уровень отказов страниц среди всех алгоритмов. Существует оптимальный алгоритм замены страниц, который называется OPT или MIN.
Замените страницу, которая не будет использоваться в течение длительного периода времени. Используйте время, когда страница будет использоваться.
Алгоритм наименее использовавшегося (LRU)
Страница, которая дольше всего не использовалась в оперативной памяти, будет выбрана для замены.
Простота реализации, ведите список, заменяйте страницы, оглядываясь назад во времени.
Алгоритм буферизации страницы
- Чтобы ускорить процесс, создайте пул свободных кадров.
- При ошибке страницы выберите страницу для замены.
- Запишите новую страницу в рамках свободного пула, отметьте таблицу страниц и перезапустите процесс.
- Теперь запишите грязную страницу с диска и поместите фрейм, содержащий замененную страницу, в свободный пул.
Наименее часто используемый (LFU) алгоритм
Страница с наименьшим количеством будет выбрана для замены.
Этот алгоритм страдает от ситуации, когда страница интенсивно используется на начальном этапе процесса, но затем больше никогда не используется.
Наиболее часто используемый (MFU) алгоритм
Этот алгоритм основан на том аргументе, что страница с наименьшим количеством, вероятно, была только что добавлена и еще не использовалась.
Эта статья содержит основную информацию о реализации виртуальной памяти в 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-битным адресом ОЗУ выполняется аппаратным обеспечением компьютера автоматически и прозрачно в соответствии с таблицами преобразования em>, которые поддерживаются операционной системой. Любая страница виртуальной памяти (32-битный адрес) может быть связана с любой физической страницей ОЗУ (36-битный адрес).
В следующем списке указано, какой объем оперативной памяти поддерживают различные версии и выпуски Windows (по состоянию на май 2010 г.):
Версия Windows | RAM |
---|---|
Windows NT 4.0 | 4 ГБ |
Windows 2000 Professional | 4 ГБ |
Windows 2000 Standard Server< /td> | 4 ГБ |
Windows 2000 Advanced Server | 8 ГБ |
Windows 2000 Datacenter Server | 32 ГБ |
Windows XP Professional | 4 ГБ |
2 ГБ | |
Windows Server 2003 Standard Edition | 4 ГБ | tr>
Windows Server 2003 Enterprise Edition | 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 ГБ |