2015-10-28 2 views
5

Я изучал связанные с управлением памятью темы. Я интересно, я правильно ли я понял:Является ли виртуальный адрес конкретным?

  • указатель (виртуальный) адрес специфику процесс
  • различных процессов могут иметь указатели с одинаковыми адресами, но эти указатели переводятся на разные физические адреса

Я правильно отношусь к этим утверждениям? Если да, применяются ли они для архитектур x86, x86-64 и ARMv7, ARMv8?

+0

Вы прочитали соответствующие википапы на [процессы] (https://en.wikipedia.org/wiki/Process_%28computing%29), [виртуальная память] (https://en.wikipedia.org/wiki/Virtual_memory), [виртуальное адресное пространство] (https://en.wikipedia.org/wiki/Virtual_address_space) ....? –

+0

@BasileStarynkevitch Ну, не все. Однако я не уверен, правильно ли я это понял. Посмотрите на ответы, оба они говорят противоположное. И если кто-то отвечает на вопрос, то он/она утверждает, что он знает тему. Итак, у нас есть две истины :) – kravemir

ответ

8

Ну за исключением:

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

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

Но да, это правильное понимание.

+3

Кроме того, общая память может отображаться на разные адреса в разных процессах. –

+0

Конечно, может, но не обязательно. Например, сопоставление разделяемых библиотек ... Я улучшу формулировку. –

+0

Спасибо. Итак, небольшое исправление будет выглядеть следующим образом: ** может ** перевести :) – kravemir

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