3

Итак, я читал о виртуальной памяти, и все это кажется довольно простым и практичным. Тем не менее, я задыхаюсь от одной основной концепции.

Если виртуальная память хранится в основной памяти, то зачем вообще ее использовать? Почему бы просто не использовать основную память?

Я уверен, что что-то здесь упускаю, просто пока не понимаю что.

3 ответа3

6

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

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

3

Виртуальная память позволяет одновременно запускать приложения размером 10 x 1 ГБ на компьютере объемом 2 ГБ.

Пейджинг по требованию

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

Перестановка

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

1

Преимущества:

  1. При компиляции кода / задачи компилятор / компоновщик должен решить / назначить адрес кода / текста (инструкции), данных (глобальные переменные), стека.

Система с MMU (блок управления памятью)(т. Е. Поддерживает виртуальную память),

Компилятор / компоновщик может свободно принимать любой адрес по мере необходимости. Во время выполнения кода MMU преобразует виртуальный адрес в физический адрес.

Система без MMU: компилятор и компоновщик должны назначать адрес в зависимости от системной памяти. Потому что он не должен использовать область памяти другой задачи.

Преимущество: компилятору / компоновщику не нужно беспокоиться о карте памяти системы.

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

Coming to your Question: If virtual memory is stored in main memory, then why even use it in the first place?Why not just use main memory?

Vitural memeory/address является представлением физического адреса / памяти. Это представление помогает облегчить реализацию многозадачности, управление памятью, разработку задач без детализации системной памяти.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .