Как понимать виртуальную память?
Как понять предложение
мы можем обобщить и разрешить каждому объекту данных иметь несколько независимых адресов, каждый из которых выбирается из своего разного адреса. Это основная идея виртуальной памяти (《CSAPP》)
почему не объект данных имеет уникальный адрес?
1 ответ
Виртуальная память обычно используется для упрощения программирования на компьютерах, где запущено несколько программ.
Если на вашем компьютере запущено несколько программ, каждая из них видит виртуальное адресное пространство памяти, соответствующее их потребностям. Что касается этой программы, жизнь проста. Они могут использовать любую память, какую захотят, по любому конкретному адресу, и им не нужно прилагать никаких усилий, чтобы избежать использования памяти другими программами.
Более того, в целях безопасности они не могут видеть память, используемую другими программами, даже если они этого хотят. Их адресное пространство памяти полностью принадлежит им, чтобы играть с ними по своему усмотрению.
Таким образом, в простом случае, когда каждый объект данных принадлежит ровно одной программе, тогда каждый объект данных имеет ровно один адрес.
Тем не менее, программы могут ссылаться на общие ресурсы. Например, две программы проверки правописания могут использовать большой файл, полный написаний на диске. Вместо того, чтобы загружать его в память дважды, операционная система обычно загружает его один раз, но две программы, использующие его, могут видеть его по разным виртуальным адресам. Таким образом, в этом случае один объект данных действительно может иметь несколько виртуальных адресов.