Как виртуальная память изолирует разные процессы? - PullRequest
0 голосов
/ 27 ноября 2018

Допустим, у меня есть два процесса: процесс A и процесс B

Когда система находится в процессе A, CPU генерирует виртуальный адрес, скажем, 0x800000.И когда он переключается на процесс B через переключатель контекста, ЦП также генерирует тот же виртуальный адрес 0x800000.так что если мы что-то напишем на страницу, то как ОС узнает, что это должна быть страница в процессе B, а не в процессе A?

1 Ответ

0 голосов
/ 27 ноября 2018

Это логическая трансляция памяти, которая разделяет процессы;не виртуальная память.

Процессы видят адреса логической памяти и не имеют доступа к базовой физической памяти.У каждого процесса есть таблицы, которые сообщают ЦПУ, как преобразовывать логические адреса в физические адреса.Операционная система поддерживает эти таблицы.

Местоположение таблиц идентифицируется с помощью защищенных аппаратных регистров.Когда процесс A выключается, а процесс B включается, операционная система (при поддержке базового оборудования) изменяет значение регистров так, чтобы использовались таблицы B.После этого логический адрес 0X800000 больше не ссылается на местоположение физической памяти «A», а вместо этого указывает на «B».

...