Я не уверен, является ли виртуальная память физическим компонентом, или люди просто называют ее методом оптимизации процессов памяти.
1 ответ
Виртуальная память - это понятие.
Как говорит Анрифф, системы, которые поддерживают виртуальную память, будут иметь MMU, который фактически обрабатывает отображение. Процессор будет использовать виртуальные адреса, которые могут быть любыми адресами в поддерживаемом им 32- или 64-битном адресном пространстве. Виртуальные адреса не ограничены объемом физической памяти.
Как я упоминал в своем комментарии, виртуальная память не должна отображаться ни к чему. Существует два набора таблиц:
таблицы страниц MMU, которые могут отображаться в реальную физическую память или могут не зависеть от бита "присутствует". Вы можете иметь страницы, которые не "присутствуют"; MMU не знает и не заботится о том, что они могут содержать, но они не отображаются в реальном физическом DRAM. Если вы пытаетесь получить доступ к одному из них, система генерирует ошибку страницы в операционной системе.
операционная система отслеживает выделение памяти процессам и себе и берет на себя ответственность за обработку ошибок страниц. Он может решить, что делать с отсутствующими страницами, пока процесс, обращающийся к памяти, приостановлен. Возможные варианты включают в себя:
Обмен: страница выгружается. Выделите реальный DRAM и прочитайте с диска на него, затем вернитесь к процессу.
Операции ввода-вывода с отображением в памяти: аналогично, но чтение из определенного файла.
Пространство PCI/AGP: запрос передается по шине, например, в графический процессор, а не в основную память.
Нули: либо операционная система поддерживает готовые предварительно обнуленные DRAM, либо прекращает записывать нули на страницу, прежде чем предоставить ее вам.
Неверно: наконец, операционная система может полностью не вернуться, а просто завершить процесс, который запросил эту страницу. Типичным примером является "чрезмерная загрузка" памяти Linux: процессы могут запрашивать и выделять больше памяти, чем доступно DRAM+ пространство подкачки. Это хорошо, если они не используют его. Если они все используют его , и система исчерпывает реальной памяти, он начнет убивать процессы , чтобы восстановить систему. Другие кризисные ситуации могут включать отображение ввода-вывода памяти в файл по сети, которая ушла, или замена диска, который вышел из строя.
Вы можете сознательно выделить непригодную страницу (опция mmap PROT_NONE в Linux). Это иногда полезно для обнаружения определенных видов ошибок.