Страницы

Поиск по вопросам

воскресенье, 15 декабря 2019 г.

Расположение кода программы в памяти компьютера

#windows #memory


Прочитал, что программы скомпилированные на VS имеют базовый адрес в памяти 0x00400000.
Стало интересно как в памяти буду располагаться 2 программы. Написал, запустил и обе
пишут адрес  0x00400000, но как? почему две разные программы располагаются по 1 адресу?
разве такое возможно?
    


Ответы

Ответ 1



Это виртуальная память, которая у каждого процесса своя. В итоге, два процесса могут быть загружены по виртуальному адресу 0x400000 и не мешать друг-другу. Есть физическая память, допустим 4 гига - от 0x00000000 до 0xFFFFFFFF. Ядро операционной системы выделяет, например, физический кусок 0x70000000 - 0x80000000 для процесса. И изнутри процесс видит эту память как 0x400000 - 0x10400000. Для второго процесса выделается 0x8000000-0x90000000, а изнутри он видит те же адреса, что и первый.

Комментариев нет:

Отправить комментарий