Все современные операционные системы * nix используют концепцию виртуальной памяти (с пейджингом). И насколько я знаю, эта концепция виртуальной памяти используется для установки уровня абстракции между программистом и реальной физической памятью: программисту не нужно ограничиваться размером плунжера, и он может видеть программу как большую непрерывное пространство данных, команд, кучи и стека (манипулировать указателями в соответствии с этой концепцией). Когда мы компилируем & ссылку на исходный код, мы получаем исполняемый файл, хранящийся на жестком диске, известный как ELF, этот файл содержит все данные и инструкции программы помимо некоторой дополнительной информации, такой как размер стека и кучи (созданный только во время выполнения).Расположение бинарных файлов ELF в виртуальной памяти
Теперь мои вопросы:
1. How does this binary file (elf) is mapped to virtual memory ?
2. Does every process has its own virtual memory (a page file !!!) ?
3. What is the program's layout after being mapped to virtual memory ?
4. What is exactly the preferred base address and how does it look in virtual memory ?
5. What is the difference between a RVA and an Offset ?
Вам не придется ответов на все вопросы или дать подробные ответы вместо этого вы можете предоставить мне хорошие полные показания о предмете, спасибо.
Возможно, вы захотите прочитать это резюме, о котором я писал об этом, http: //www.gabriel.urdhr.fr/2015/01/22/elf-linking/ – ysdx
Вы можете найти информацию о сопоставлении файла ELF в памяти в http://stackoverflow.com/questions/33756119/relationship-between-vma-and-elf-segments – ysdx
@ysdx thnx, это было очень полезно для меня, и я познакомился с новыми идеями. – afr0ck