Предположим, что у меня есть два приложения, работающих в системе x86, и оба приложения обращаются к виртуальной памяти по одному и тому же виртуальному адресу. Если виртуальное отображение в физическое состоит из битов, используется для индексации каталога страниц и таблицы страниц, как таблицы страниц смогут сопоставить два экземпляра одного и того же виртуального адреса (например, 400000h) с разными физическими адресами? Не будут ли они в конечном итоге индексировать одну и ту же запись в таблице страниц, потому что виртуальные адреса одинаковы?
Как архитектура x86 одновременно виртуализирует один и тот же адрес?
comment
ОС гарантирует, что каждый процесс получит свою собственную таблицу страниц.
- person Chuck Adams   schedule 14.11.2019
comment
В x86/x86-64, когда ОС выполняет переключение контекста между процессами (приложениями), она обычно изменяет регистр CR3, содержащий адрес корня структур подкачки для процесса. Используя этот метод, каждому процессу можно задать различные сопоставления виртуальных и физических адресов. Также возможно, что разные процессы имеют виртуальный адрес, сопоставленный с тем же физическим адресом, что и другие процессы, что приводит к концепции общей памяти между процессами.
- person Michael Petch   schedule 14.11.2019
comment
stackoverflow.com/questions/26583919/ упоминает как часть предпосылки вопроса о том, что у каждого процесса есть свои собственные таблицы страниц, но не идеальный дубликат, потому что ответы не об этом. stackoverflow.com/questions/10671147/ имеет комментарий от OP о том, что переключатели контекста должны изменить CR3. Ах, наконец-то нашел вопросы и ответы о выборе таблиц страниц для каждого процесса, где ответ должен установить CR3. Это дубликат, связанный с этим вопросом.
- person Peter Cordes   schedule 14.11.2019
comment
Также обратите внимание, что каждое логическое ядро имеет свой собственный регистр CR3 (и другое архитектурное состояние), поэтому многоядерные системы могут запускать разные процессы на разных ядрах, даже с гиперпоточностью на одном физическом ядре.
- person Peter Cordes   schedule 14.11.2019