1

Меня интересует тема операционной системы, и у меня есть фиктивный вопрос. Стандартные исполняемые файлы PE связаны с 0x400000. Мой вопрос заключается в том, как операционная система может загружать несколько исполняемых файлов с одинаковой базой изображений, когда виртуальная память просто сопоставляет виртуальные адреса с физическими. Он где-то хранит индекс PDE и PTE? Есть ли какое-то дополнение к каждому адресу до запуска? Как это работает?Выполнение нескольких исполняемых файлов, связанных с 0x400000

ответ

3

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

Во время переключения потоков, когда ЦП собирается выполнить поток из другого процесса, чем он выполнял до сих пор, operating system's scheduler информирует CPU (устанавливает соответствующие регистры) о новой таблице преобразования виртуальных адресов. Таким образом, процессор считает, что в данный момент есть только одно виртуальное адресное пространство, а операционная система может управлять гораздо больше, по одному для каждого процесса.


Отказ от ответственности: Мой ответ может быть мысль о том, как немного поверхностным или неточным, в отличие от реальности. Это ради простоты в отношении характера вопроса ОП. Кроме того, эти механизмы зависят от процессора и зависят от операционной системы.

+1

спасибо. – user35443

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