Я сталкивался с таким вопросом: «Если процесс A содержит указатель на переменную в процессе B, может ли A получить доступ и изменить эту переменную?»
Моя интуиция такова, поскольку процессА и В разные, им нельзя разрешать доступ к адресному пространству друг друга, так как это нарушит защиту.
Но после некоторого размышления у меня возникли следующие вопросы, и я хочу получить разъяснения.
(i).Когда мы говорим, что A имеет указатель на переменную V в B, содержит ли A виртуальный адрес (процесса B), соответствующий V, или физический адрес?
Я полагаю, когда мы говорим об адресе в системах виртуальной памятиМы всегда говорим о виртуальном адресе.Пожалуйста, уточните.
(ii).Если A содержит виртуальный адрес, поскольку возможно, что и A, и B могут иметь один и тот же виртуальный адрес, возможно, что таблица страниц A содержит отображение для виртуального адреса, который содержит A (который фактически является виртуальным адресом переменной V впроцесс Б).Затем, когда A пытается получить доступ и изменить этот виртуальный адрес, он изменяет что-то в своем собственном адресном пространстве (этот доступ будет разрешен, поскольку A обращается к своему собственному адресу).
Я думаю, что приведенные выше рассуждения применимы, когда мы пытаемсяполучить доступ к некоторому случайному виртуальному адресу из процесса, т. е. случайно адрес, к которому мы пытаемся получить доступ, имеет действительное сопоставление.
Пожалуйста, отбросьте свои мысли.