Виртуальная память загружается больше, чем физическая
Обновлено: 21.11.2024
Виртуальная память — это схема распределения памяти, в которой вторичная память может быть адресована так, как если бы она была частью основной памяти. Адреса, которые программа может использовать для ссылки на память, отличаются от адресов, которые система памяти использует для идентификации физических мест хранения, а сгенерированные программой адреса автоматически преобразуются в соответствующие машинные адреса.
Размер виртуального хранилища ограничен схемой адресации компьютерной системы, а объем доступной вторичной памяти не зависит от фактического количества мест основного хранилища.
- Все ссылки на память внутри процесса представляют собой логические адреса, которые динамически преобразуются в физические адреса во время выполнения. Это означает, что процесс может перемещаться в основную память и из нее таким образом, что он занимает разные места в основной памяти в разное время в ходе выполнения.
- Процесс может быть разбит на несколько частей, и эти части не должны постоянно находиться в основной памяти во время выполнения. Это позволяет сочетание динамического преобразования адресов во время выполнения и использования таблицы страниц или сегментов.
Если эти характеристики присутствуют, то нет необходимости, чтобы все страницы или сегменты присутствовали в основной памяти во время выполнения. Это означает, что необходимые страницы должны быть загружены в память всякий раз, когда это необходимо. Виртуальная память реализуется с использованием пейджинга по требованию или сегментации по требованию.
Пейджинг по запросу:
Процесс загрузки страницы в память по требованию (всякий раз, когда происходит сбой страницы) известен как пейджинг по запросу.
Процесс включает следующие этапы:
- Если ЦП пытается обратиться к странице, которая в данный момент недоступна в основной памяти, он генерирует прерывание, указывающее на ошибку доступа к памяти.
- ОС переводит прерванный процесс в состояние блокировки. Чтобы выполнение продолжилось, ОС должна загрузить требуемую страницу в память.
- ОС будет искать нужную страницу в логическом адресном пространстве.
- Требуемая страница будет перенесена из логического адресного пространства в физическое адресное пространство. Алгоритмы замены страницы используются для принятия решения о замене страницы в физическом адресном пространстве.
- Таблица страниц будет соответствующим образом обновлена.
- ЦП будет отправлен сигнал для продолжения выполнения программы, и он вернет процесс в состояние готовности.
Следовательно, всякий раз, когда происходит сбой страницы, операционная система выполняет эти шаги, и требуемая страница загружается в память.
- В основной памяти может храниться больше процессов: поскольку мы собираемся загружать только некоторые страницы любого конкретного процесса, остается место для большего количества процессов. Это приводит к более эффективному использованию процессора, поскольку более вероятно, что по крайней мере один из более многочисленных процессов будет находиться в состоянии готовности в любой конкретный момент времени.
- Процесс может быть больше, чем вся основная память: снимается одно из самых фундаментальных ограничений в программировании. Процесс, объем которого превышает основную память, может быть выполнен из-за подкачки по запросу. ОС сама загружает страницы процесса в основную память по мере необходимости.
- Это обеспечивает более высокий уровень многозадачности за счет использования меньшего объема доступной (основной) памяти для каждого процесса.
Время обслуживания ошибки страницы:
Время, необходимое для обслуживания ошибки страницы, называется временем обслуживания ошибки страницы. Время обслуживания ошибки страницы включает время, затраченное на выполнение всех шести вышеуказанных шагов.
Обмен:
Выключение процесса означает удаление всех его страниц из памяти или их пометку, чтобы они были удалены в ходе обычного процесса замены страниц. Приостановка процесса гарантирует, что он не сможет работать, пока он выгружен. Через некоторое время система переключает процесс обратно из вторичного хранилища в основную память. Когда процесс занят обменом страницами, такая ситуация называется перегрузкой.
Пробивка:
В любой момент времени в основной памяти находится лишь несколько страниц любого процесса, поэтому в памяти может храниться больше процессов. Кроме того, экономится время, поскольку неиспользуемые страницы не загружаются и не удаляются из памяти. Однако ОС должна хорошо разбираться в том, как она управляет этой схемой. В установившемся режиме практически вся основная память будет занята страницами процессов, так что процессор и ОС имеют прямой доступ к как можно большему количеству процессов. Таким образом, когда ОС загружает одну страницу, она должна выбрасывать другую.Если он выбрасывает страницу непосредственно перед тем, как ее использовать, то ему просто нужно будет получить эту страницу снова почти немедленно. Слишком много этого приводит к состоянию, называемому «Трэшинг». Система тратит большую часть своего времени на переключение страниц, а не на выполнение инструкций. Поэтому требуется хороший алгоритм замены страницы.
На приведенной диаграмме начальная степень мультипрограммирования до некоторой степени (лямбда), загрузка ЦП очень высока, а системные ресурсы используются на 100%. Но если мы еще больше увеличим степень мультипрограммирования, загрузка процессора резко упадет, и система будет тратить больше времени только на замену страниц, а время, затрачиваемое на выполнение процесса, увеличится. Такая ситуация в системе называется пробуксовкой.
-
Высокая степень мультипрограммирования: если количество процессов в памяти продолжает увеличиваться, количество кадров, выделенных каждому процессу, будет уменьшаться. Таким образом, для каждого процесса будет доступно меньше кадров. Из-за этого сбой страницы будет происходить чаще, и больше процессорного времени будет потрачено впустую только на загрузку и удаление страниц, а загрузка будет продолжать снижаться.
Например:
Пусть свободных кадров = 400
Случай 1: количество процессов = 100
Тогда каждый процесс получит 4 кадра.
Если у вас есть несколько лет опыта работы в области компьютерных наук или исследований и вы хотите поделиться этим опытом с сообществом, ознакомьтесь с нашими Правилами участия.
1. Обзор
В этом руководстве мы узнаем о концепции виртуальной памяти в операционных системах (ОС). Мы рассмотрим проблемы, формирующие основную мотивацию создания виртуальной памяти. Наконец, мы объясним цель использования этой функции в ОС.
2. Мотивация
Компьютеры предназначены для выполнения множества программ, каждая из которых работает с разными объемами данных. Ожидается, что операционные системы будут лучше использовать ресурсы компьютера, гарантируя быструю и эффективную обработку.
Три основные проблемы вызывают медленную обработку с точки зрения времени и потребляемой памяти. Поскольку мы храним данные в байтах на диске, ЦП должен загружать необходимые данные в ОЗУ при выполнении программ.
Во время выполнения ОС позволяет программе использовать определенный диапазон адресов из ОЗУ. Предположим, что это пространство в битах, что означает, что здесь требуется ожидаемый размер ОЗУ (экзабайт).
Теперь предположим, что ОС уже зарезервировала его часть (), но на компьютере памяти меньше, чем требуется ОЗУ. Попытка использовать адреса вне допустимого диапазона приведет к сбою компьютера.
Кроме того, ОС не может иметь такую большую оперативную память:
При одновременном выполнении нескольких программ ОС выделяет каждой из них непрерывный раздел ОЗУ, что позволяет выполнять их одновременно. Теперь предположим, что две программы завершили свое выполнение. Если пространство, освобожденное двумя программами, не является непрерывным и его недостаточно для запуска других программ, в ОЗУ будут дыры в разных местах. Это приводит к фрагментации памяти:
Поскольку многие программы выполняются одновременно, несколько программ могут обращаться к одному и тому же блоку памяти. Чтобы изменить свое значение, эти программы могут столкнуться друг с другом, повредить память или привести к сбою системы. На рисунке ниже показано, как данные могут быть легко повреждены при доступе к ним нескольких программ:
3. Введение в виртуальную память
Виртуальная память – это метод, направленный на устранение физической нехватки памяти за счет использования дополнительной памяти, чтобы ОС рассматривала ее как часть основной памяти. Виртуальная память — это временная память. Размер хранилища виртуальной памяти зависит от схемы адресации, используемой ОС, и доступной вторичной памяти.
Виртуальная память сопоставляет адреса программ с адресами ОЗУ. Если свободного места больше нет, эти адреса будут отображены на диске:
Основное преимущество виртуальной памяти заключается в том, что ОС может загружать программы, объем которых превышает ее физическую память. У пользователей создается впечатление, что компьютер имеет неограниченную память. Он также обеспечивает защиту памяти.
Для реализации операций отображения виртуальная память должна использовать таблицы страниц и переводы. Таблицы страниц — это структура данных, в которой хранятся таблицы страниц, известные как запись таблицы страниц (PTE). Цель таблиц страниц — сопоставить виртуальные адреса с физическими адресами.Это непрерывный блок и наименьшая единица виртуальной памяти.
Создание страниц памяти заключается в их разделении на кадры одинакового размера. Каждый кадр относится к каждому номеру кадра физического адреса, смещению кадра или абсолютному адресу.
Преобразование — это процесс преобразования виртуального адреса в физический с помощью таблиц страниц:
Чтобы ускорить процесс чтения данных, виртуальная память может использовать кэш-память. Поскольку физические кеши не гарантируют быстрого процесса, мы используем виртуальные кеши. Процессор напрямую подключен к кешу и ищет в нем виртуальные адреса, избегая трансляции. Перевод будет происходить только в том случае, если адрес не найден. В конце концов, у каждой программы есть свой виртуальный кеш:
4. Зачем нам виртуальная память?
Виртуальная память играет важную роль в современной ОС. В этом разделе мы обсудим некоторые важные причины, по которым ОС должна использовать виртуальную память.
4.1. Проблема с местом в памяти
Виртуальная память упрощает обмен кодом; поэтому нам не нужно хранить несколько копий одного и того же кода. В виртуальной памяти разные виртуальные адреса могут сопоставляться с одним и тем же местом в физической памяти. Следовательно, нам не нужно хранить несколько копий одного и того же кода в основной памяти.
Оперативная память очень дорогая. В результате использование очень большого объема ОЗУ не является приемлемым решением для уменьшения потребности в распределении памяти. Выделение виртуальной памяти для каждой программы и сопоставление адресов с диском устраняет проблемы с нехваткой места.
В случае бинарных файлов, когда мы загружаем их в ОС, каждая функция резервирует фиксированный адрес в основной памяти. Если виртуальной памяти не существует, мы не можем загрузить более одной программы в основную память. Это означает, что без виртуальной памяти мы можем запускать только одну программу за раз. Это связано с тем, что каждая программа может использовать разные функции, которые могут указывать на одни и те же адреса в ОЗУ.
4.2. Безопасность данных
Еще одним важным вопросом является безопасность данных. Как правило, программа может угадать физический адрес другой программы и получить доступ к конфиденциальным и секретным данным.
Если ОС использует метод виртуальной памяти, даже если некоторым программам требуется доступ к одному и тому же адресу, все они имеют разные сопоставления. Это гарантирует, что они будут обращаться к разным адресам в ОЗУ или на диске. Вот как виртуальная память обеспечивает безопасность данных.
Это также обеспечивает независимость данных от позиции. Мы можем хранить данные в любом месте основной памяти.
4.3. Фрагментация памяти и ошибки
Виртуальная память облегчает каждой программе собственное сопоставление. Пространство данных не обязательно должно быть непрерывным, и каждая программа может хранить данные где угодно.
Он также упрощает отладку и предоставляет параметры для проверки различных функций, таких как нераспределенная память и нулевые указатели.
Предположим, что в ОС одновременно запущено два или более приложений. Все эти приложения используют прямые адреса оперативной памяти. Если во время работы одного из приложений возникает ошибка, например ошибка памяти, другие приложения могут быть уничтожены и отключены.
Некоторые физические устройства, такие как видеопамять, могут заранее резервировать некоторые адреса памяти, в зависимости от аппаратного обеспечения, используемого в компьютере. Если ОС начинает загружать программы, не зная зарезервированных адресов, ОС может читать и записывать по зарезервированным адресам. Это может привести к физическому повреждению подключенных устройств. Виртуальная память помогает ОС избежать этих проблем.
5. Заключение
В этой статье мы подробно обсудили виртуальную память. Мы начали наше обсуждение с описания некоторых мотивов использования виртуальной памяти в ОС. Затем мы дали общий обзор концепции виртуальной памяти. Наконец, мы объяснили, зачем нужна виртуальная память в ОС.
Если у вас есть несколько лет опыта работы в области компьютерных наук или исследований и вы хотите поделиться этим опытом с сообществом, ознакомьтесь с нашими Правилами участия.
Виртуальная память — это механизм хранения, который дает пользователю иллюзию наличия очень большой оперативной памяти. Это делается путем обработки части вторичной памяти как основной памяти. В виртуальной памяти пользователь может хранить процессы большего размера, чем доступная основная память.
Поэтому вместо загрузки одного длинного процесса в основную память ОС загружает в основную память различные части более чем одного процесса. Виртуальная память в основном реализована с пейджингом по запросу и сегментацией по требованию.
Из этого руководства по операционной системе вы узнаете:
Зачем нужна виртуальная память?
Вот причины использования виртуальной памяти:
- Всякий раз, когда на вашем компьютере не хватает места в физической памяти, он записывает то, что ему нужно запомнить, на жесткий диск в файле подкачки в виде виртуальной памяти.
- Если компьютеру под управлением Windows требуется больше памяти/ОЗУ, то при установке в систему он использует для этой цели небольшую часть жесткого диска.
Как работает виртуальная память?
В современном мире виртуальная память стала довольно распространенным явлением. Он используется всякий раз, когда некоторые страницы требуют загрузки в основную память для выполнения, а память недоступна для этих многих страниц.
Таким образом, в этом случае вместо того, чтобы предотвращать ввод страниц в основную память, ОС ищет пространство ОЗУ, которое минимально использовалось в последнее время или на которое не ссылаются во вторичной памяти, чтобы освободить место для новые страницы в оперативной памяти.
Давайте разберемся с управлением виртуальной памятью на одном примере.
Например:
Предположим, что операционной системе требуется 300 МБ памяти для хранения всех запущенных программ. Однако в настоящее время в оперативной памяти хранится только 50 МБ доступной физической памяти.
- Затем ОС настроит 250 МБ виртуальной памяти и будет использовать программу Virtual Memory Manager (VMM) для управления этими 250 МБ.
- Поэтому в этом случае VMM создаст на жестком диске файл размером 250 МБ для хранения необходимой дополнительной памяти.
- Теперь ОС перейдет к адресации памяти, так как считает, что 300 МБ реальной памяти хранится в ОЗУ, даже если доступно только 50 МБ.
- Задачей VMM является управление 300 МБ памяти, даже если доступно всего 50 МБ реального пространства памяти.
Что такое пейджинг по запросу?
Механизм подкачки по требованию очень похож на систему подкачки с подкачкой, где процессы, хранящиеся во вторичной памяти, и страницы загружаются только по запросу, а не заранее.
Поэтому, когда происходит переключение контекста, ОС никогда не копирует страницы старой программы с диска или страницы новой программы в основную память. Вместо этого он начнет выполнение новой программы после загрузки первой страницы и извлечет страницы программы, на которые есть ссылки.
Если во время выполнения программы программа ссылается на страницу, которая может быть недоступна в основной памяти из-за того, что она была заменена подкачкой, то процессор рассматривает ее как недопустимую ссылку на память. Это связано с ошибкой страницы и передачей управления отправкой обратно из программы в ОС, которая требует сохранить страницу обратно в память.
Типы методов замены страницы
Вот некоторые важные методы замены страницы
- FIFO
- Оптимальный алгоритм
- Замена страницы LRU
Замена страницы FIFO
FIFO (First-in-first-out) – это простой метод реализации. В этом методе память выбирает для замены страницу, которая дольше всего находилась в виртуальном адресе памяти.
Особенности:
- Каждый раз, когда загружается новая страница, страница, недавно поступившая в память, удаляется. Таким образом, легко решить, какую страницу необходимо удалить, поскольку ее идентификационный номер всегда находится в стеке FIFO.
- Самая старая страница в основной памяти должна быть выбрана для замены в первую очередь.
Оптимальный алгоритм
Оптимальный метод замены страницы выбирает ту страницу для замены, для которой время до следующего обращения является самым продолжительным.
Особенности:
- Оптимальный алгоритм обеспечивает наименьшее количество ошибок страниц. Этот алгоритм сложно реализовать.
- Оптимальный метод алгоритма замены страниц имеет самый низкий уровень ошибок страниц среди всех алгоритмов. Этот алгоритм существует и должен называться MIN или OPT.
- Замените страницу, которая не будет использоваться в течение длительного периода времени. Он использует только время, когда необходимо использовать страницу.
Замена страницы LRU
Полная форма LRU – это наименее часто используемая страница. Этот метод помогает ОС определить использование страницы за короткий период времени. Этот алгоритм должен быть реализован путем связывания счетчика с четной страницей.
Как это работает?
- Страница, которая дольше всего не использовалась в основной памяти, будет выбрана для замены.
- Легко внедрить, вести список, заменять страницы, заглядывая в прошлое.
Особенности:
- Метод замены LRU имеет наибольшее количество. Этот счетчик также называется регистрами устаревания, которые указывают их возраст и количество ссылок на связанные с ними страницы.
- Страница, которая дольше всего не использовалась в оперативной памяти, должна быть выбрана для замены.
- Он также ведет список и заменяет страницы, оглядываясь назад во времени.
Частота отказов
Частота отказов — это частота, с которой система или компонент выходят из строя. Выражается в количестве отказов в единицу времени. Обозначается греческой буквой ? (лямбда).
Компьютер может адресовать больше памяти, чем физически установлено в системе. Эта дополнительная память на самом деле называется виртуальной памятью и представляет собой раздел жесткого диска, настроенный для эмуляции оперативной памяти компьютера.
Основное видимое преимущество этой схемы заключается в том, что программы могут занимать больше места, чем физическая память. Виртуальная память служит двум целям. Во-первых, это позволяет нам расширить использование физической памяти за счет использования диска. Во-вторых, это позволяет нам защитить память, поскольку каждый виртуальный адрес транслируется в физический адрес.
Ниже приведены ситуации, когда всю программу не требуется полностью загружать в оперативную память.
Процедуры обработки ошибок, написанные пользователем, используются только в случае возникновения ошибки в данных или вычислениях.
Некоторые параметры и функции программы могут использоваться редко.
Многим таблицам назначается фиксированный объем адресного пространства, хотя фактически используется лишь небольшой объем таблицы.
Возможность выполнения программы, которая лишь частично находится в памяти, может свести на нет многие преимущества.
Меньше операций ввода-вывода потребуется для загрузки или выгрузки каждой пользовательской программы в память.
Программа больше не будет ограничиваться объемом доступной физической памяти.
Каждая пользовательская программа может занимать меньше физической памяти, больше программ может выполняться одновременно с соответствующим увеличением загрузки ЦП и пропускной способности.
В современные микропроцессоры, предназначенные для универсального использования, блок управления памятью или MMU встроен в аппаратное обеспечение. Работа MMU заключается в преобразовании виртуальных адресов в физические адреса. Базовый пример приведен ниже —
Виртуальная память обычно реализуется путем подкачки по требованию. Он также может быть реализован в системе сегментации. Сегментация спроса также может использоваться для предоставления виртуальной памяти.
Пейджинг по требованию
Система подкачки по требованию очень похожа на систему подкачки с подкачкой, где процессы находятся во вторичной памяти, а страницы загружаются только по требованию, а не заранее. Когда происходит переключение контекста, операционная система не копирует страницы старой программы на диск или страницы новой программы в оперативную память. Вместо этого она просто начинает выполнять новую программу после загрузки первой страницы и извлекает ее. страницы программы, как на них ссылаются.
Во время выполнения программы, если программа ссылается на страницу, которая недоступна в основной памяти, поскольку она была недавно выгружена, процессор рассматривает эту недопустимую ссылку на память как ошибку страницы и передает управление от программы к операционная система запросит страницу обратно в память.
Преимущества
Ниже приведены преимущества пейджинга по запросу.
- Большая виртуальная память.
- Более эффективное использование памяти.
- Степень мультипрограммирования не ограничена.
Недостатки
Количество таблиц и нагрузка процессора на обработку страничных прерываний больше, чем в случае простых методов страничного управления.
Алгоритм замены страницы
Алгоритмы замены страниц — это методы, с помощью которых операционная система решает, какие страницы памяти следует выгружать и записывать на диск, когда необходимо выделить страницу памяти. Пейджинг происходит всякий раз, когда происходит сбой страницы, и свободная страница не может быть использована для учета распределения по причине того, что страницы недоступны или количество свободных страниц меньше, чем требуется.
При повторном обращении к странице, которая была выбрана для замены и была выгружена, она должна быть считана с диска, а это требует завершения ввода-вывода. Этот процесс определяет качество алгоритма замены страниц: чем меньше время ожидания загрузки страниц, тем лучше алгоритм.
Алгоритм замены страниц анализирует ограниченную информацию о доступе к страницам, предоставленную аппаратным обеспечением, и пытается выбрать, какие страницы следует заменить, чтобы свести к минимуму общее количество пропущенных страниц, при этом уравновешивая затраты на основное хранилище и процессорное время. самого алгоритма. Существует множество различных алгоритмов замены страниц. Мы оцениваем алгоритм, запуская его на определенной строке ссылки на память и вычисляя количество ошибок страниц,
Ссылочная строка
Строка ссылок на память называется ссылочной строкой.Строки ссылок генерируются искусственно или путем отслеживания данной системы и записи адреса каждой ссылки на память. Последний вариант приводит к большому количеству данных, где мы отмечаем две вещи.
Для заданного размера страницы нам нужно учитывать только номер страницы, а не весь адрес.
Если у нас есть ссылка на страницу p, то любые последующие ссылки на страницу p никогда не вызовут ошибку страницы. Страница p будет находиться в памяти после первого обращения; следующие ссылки не будут ошибкой.
Например, рассмотрим следующую последовательность адресов — 123 215 600 1234, 76, 96
Если размер страницы равен 100, то ссылочная строка будет 1,2,6,12,0,0
Алгоритм «первым пришел – первым обслужен» (FIFO)
Самая старая страница в оперативной памяти будет выбрана для замены.
Простота реализации, ведение списка, замена страниц в конце и добавление новых страниц в начале.
Оптимальный алгоритм страницы
Оптимальный алгоритм замены страниц имеет самый низкий уровень отказов страниц среди всех алгоритмов. Существует оптимальный алгоритм замены страниц, который называется OPT или MIN.
Замените страницу, которая не будет использоваться в течение длительного периода времени. Используйте время, когда страница будет использоваться.
Алгоритм наименее использовавшегося (LRU)
Страница, которая дольше всего не использовалась в оперативной памяти, будет выбрана для замены.
Простота реализации, ведите список, заменяйте страницы, оглядываясь назад во времени.
Алгоритм буферизации страницы
- Чтобы ускорить процесс, создайте пул свободных кадров.
- При ошибке страницы выберите страницу для замены.
- Запишите новую страницу в рамках свободного пула, отметьте таблицу страниц и перезапустите процесс.
- Теперь запишите грязную страницу с диска и поместите фрейм, содержащий замененную страницу, в свободный пул.
Наименее часто используемый (LFU) алгоритм
Страница с наименьшим количеством будет выбрана для замены.
Этот алгоритм страдает от ситуации, когда страница интенсивно используется на начальном этапе процесса, но затем больше никогда не используется.
Наиболее часто используемый (MFU) алгоритм
Этот алгоритм основан на том аргументе, что страница с наименьшим количеством, вероятно, была только что добавлена и еще не использовалась.
Читайте также: