У меня есть этот тонкий вопрос о виртуальной памяти.В одной книге я прочитал эту цитату
Когда исполняется файл ELF, текст и два сегмента данных загружаются в отдельные области виртуальной памяти
Но если мынапример, компиляция программы на C, состоящей из двух исходных файлов, без ссылки на нее создаст два объектных файла.И в обоих объектных файлах адресация начинается с нуля.Затем, если мы свяжем оба объектных файла в один исполняемый файл и проверим его, мы увидим, что адресация больше не начинается с нуля, а некоторый адрес уже назначен каждому из сегментов.И, как я понимаю, этот назначенный адрес является адресом виртуальной памяти.Итак, у меня есть два вопроса:
- Итак, я прав, что именно компоновщик запрашивает некоторый диапазон виртуальной памяти у ОС и назначает его сегментам программы?
- Что означает автор цитаты, когда говорит, что виртуальный адрес назначается при выполнении процесса?