2013-05-10 10 views
0

Я немного не уверен в концепциях физического и виртуального адресов. Вот что я понял:Виртуальный виртуальный адрес

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

Может ли кто-нибудь одобрить, прав я или нет?

Заранее спасибо

ответ

1

Виртуальный адрес представляет собой слой абстракции поверх физических адресов. Физический адрес сопоставляется с определенной строкой в ​​чипе ram. Однако каждый процесс имеет свое виртуальное адресное пространство. Операционная система и аппаратные средства переводят виртуальные адреса в физические при загрузке/хранении.

Один и тот же виртуальный адрес в двух разных процессах обычно преобразуется в две разные области физической памяти. Например, вы можете написать две разные программы, которые загружены главным образом где-то около 0x400000.

Несмотря на то, что 64-битное виртуальное адресное пространство очень велико и может содержать весь код и данные всех исполняемых программ, вы не можете найти код и/или данные другого процесса в своем виртуальном адресном пространстве, если он не отображается на карте операционной системы в несколько процессов.

Один пример с разделяемыми библиотеками. Они загружаются в память, а операционная система отображает физическую память, в которой они находятся, в виртуальное адресное пространство нескольких процессов. Другим встречным примером является разделяемая память IPC (http://en.wikipedia.org/wiki/Shared_memory).

Указанная вами таблица страниц - это механизм, используемый операционной системой для сопоставления виртуальной памяти с физической памятью.

Смежные вопросы