Как понять виртуальную память?

Как понять предложение

мы можем обобщить и позволить каждому объекту данных иметь несколько независимых адресов, каждый из которых выбирается из другого адресного пространства. Это основная идея виртуальной памяти (《CSAPP》).

почему объект данных не имеет уникального адреса?


person booirror    schedule 25.04.2013    source источник


Ответы (1)


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

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

Кроме того, в целях безопасности они не могут видеть память, используемую другими программами, даже если захотят. Их адресное пространство памяти полностью принадлежит им, и они могут играть с ними по своему усмотрению.

Таким образом, в простом случае, когда каждый объект данных принадлежит ровно одной программе, каждый объект данных действительно имеет ровно один адрес.

Однако программы могут ссылаться на общие ресурсы. Например, двум программам проверки орфографии может потребоваться использовать большой файл с написанием слов на диске. Вместо того, чтобы дважды загружать его в память, операционная система обычно загружает его один раз, но две программы, которые его используют, могут видеть его по разным виртуальным адресам. Так что в этом случае у одного объекта данных действительно может быть несколько виртуальных адресов.

person Adrian Taylor    schedule 25.04.2013
comment
Пример: Программа А выделяет блок памяти по адресу 1. Программа Б выделяет один блок памяти по адресу 1. Теперь программа Б решает, что она хочет совместно использовать ту же память, что и программа А по адресу 1, но она не может разместить это по тому же адресу в своем собственном виртуальном адресном пространстве, потому что что-то еще там уже есть, поэтому он любезно просит ОС вместо этого сопоставить его с адресом 2. Теперь адрес 1 программы A и адрес 2 программы B относятся к одному и тому же физическому блоку памяти. - person Sergey L.; 25.04.2013