Прочитал, что программы скомпилированные на VS имеют базовый адрес в памяти 0x00400000. Стало интересно как в памяти буду располагаться 2 программы. Написал, запустил и обе пишут адрес 0x00400000, но как? почему две разные программы располагаются по 1 адресу? разве такое возможно?
Ответ
Это виртуальная память, которая у каждого процесса своя. В итоге, два процесса могут быть загружены по виртуальному адресу 0x400000 и не мешать друг-другу. Есть физическая память, допустим 4 гига - от 0x00000000 до 0xFFFFFFFF. Ядро операционной системы выделяет, например, физический кусок 0x70000000 - 0x80000000 для процесса. И изнутри процесс видит эту память как 0x400000 - 0x10400000. Для второго процесса выделается 0x8000000-0x90000000, а изнутри он видит те же адреса, что и первый.
Комментариев нет:
Отправить комментарий