Я не уверен, является ли виртуальная память физическим компонентом, или люди просто называют ее методом оптимизации процессов памяти.

1 ответ1

4

Виртуальная память - это понятие.

Как говорит Анрифф, системы, которые поддерживают виртуальную память, будут иметь MMU, который фактически обрабатывает отображение. Процессор будет использовать виртуальные адреса, которые могут быть любыми адресами в поддерживаемом им 32- или 64-битном адресном пространстве. Виртуальные адреса не ограничены объемом физической памяти.

Как я упоминал в своем комментарии, виртуальная память не должна отображаться ни к чему. Существует два набора таблиц:

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

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

Обмен: страница выгружается. Выделите реальный DRAM и прочитайте с диска на него, затем вернитесь к процессу.

Операции ввода-вывода с отображением в памяти: аналогично, но чтение из определенного файла.

Пространство PCI/AGP: запрос передается по шине, например, в графический процессор, а не в основную память.

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

Неверно: наконец, операционная система может полностью не вернуться, а просто завершить процесс, который запросил эту страницу. Типичным примером является "чрезмерная загрузка" памяти Linux: процессы могут запрашивать и выделять больше памяти, чем доступно DRAM+ пространство подкачки. Это хорошо, если они не используют его. Если они все используют его , и система исчерпывает реальной памяти, он начнет убивать процессы , чтобы восстановить систему. Другие кризисные ситуации могут включать отображение ввода-вывода памяти в файл по сети, которая ушла, или замена диска, который вышел из строя.

Вы можете сознательно выделить непригодную страницу (опция mmap PROT_NONE в Linux). Это иногда полезно для обнаружения определенных видов ошибок.

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