История изменений
Исправление SZT, (текущая версия) :
Что такое page tables?
Пользовательский процесс работает в защищенном режиме(с MMU) и он обычно имеет дело не с реальными физическими адресами, а с виртуальными, куски памяти отображаются в виртуальной адресное пространство процесса. Page table связывает адреса виртуальные(доступные процессу) с адресами физическими...
Короче, это долго объяснять. Вот релевантные ссылки, где на мой взгляд достаточно поднятно это описано
https://habrahabr.ru/company/embox/blog/256191/
https://habrahabr.ru/post/211150/
https://en.wikipedia.org/wiki/Page_table
https://en.wikipedia.org/wiki/Virtual_address
http://www.intuit.ru/studies/courses/2192/31/lecture/984
Есть еще механизм подкачки страниц https://en.wikipedia.org/wiki/Paging
Ещё хорошо бы было описать, как отрабатывает команда процессора syscall, что делает ядро, что делает процессор и т.д.
Это надо закапываться в интел мануалы. Не думаю что стоит особо заострять внимание на кривой и костыльной интел архитектуре. Ну понятно что там переход с RING 0 в RING 3 при SYSENTER. Вот например статья про это http://duartes.org/gustavo/blog/post/cpu-rings-privilege-and-protection/
И еще http://prodebug.sourceforge.net/pmtut.html
Правда там 32-битное описывают, а не 64-битное.
Один момент хотел бы предложить. Чтобы понять соответствие между кодом C и Ассемблером, полезно рассмотреть команду mov и оператор присваивания.
Конечно все рассмотрим
Как получить список функций в .so или др. файле?
readelf покажет. Например readelf -Ws /lib/x86_64-linux-gnu/libc.so.6 | grep puts
https://stackoverflow.com/questions/34732/how-do-i-list-the-symbols-in-a-so-file
https://www.cs.swarthmore.edu/~newhall/unixhelp/compilecycle.html вот еще полезная ссылка
Каков формат .o-файла?
ELF файл это. Если конкретней - ELF 64-bit LSB relocatable. .so файлы это тоже ELF.
Да, кстати. Вот тут происходит загрузка ELF файла. http://lxr.free-electrons.com/source/fs/binfmt_elf.c#L667
Можно попробовать отследить весь путь, начиная от вызова execve()
только тут уже надо в ядро отладчиком тыкать.
Исходная версия SZT, :
Что такое page tables?
Пользовательский процесс работает в защищенном режиме(с MMU) и он обычно имеет дело не с реальными физическими адресами, а с виртуальными, куски памяти отображаются в виртуальной адресное пространство процесса. Page table связывает адреса виртуальные(доступные процессу) с адресами физическими...
Короче, это долго объяснять. Вот релевантные ссылки, где на мой взгляд достаточно поднятно это описано
https://habrahabr.ru/company/embox/blog/256191/
https://habrahabr.ru/post/211150/
https://en.wikipedia.org/wiki/Page_table
http://www.intuit.ru/studies/courses/2192/31/lecture/984
https://en.wikipedia.org/wiki/Virtual_address
Есть еще механизм подкачки страниц https://en.wikipedia.org/wiki/Paging
Ещё хорошо бы было описать, как отрабатывает команда процессора syscall, что делает ядро, что делает процессор и т.д.
Это надо закапываться в интел мануалы. Не думаю что стоит особо заострять внимание на кривой и костыльной интел архитектуре. Ну понятно что там переход с RING 0 в RING 3 при SYSENTER. Вот например статья про это http://duartes.org/gustavo/blog/post/cpu-rings-privilege-and-protection/
И еще http://prodebug.sourceforge.net/pmtut.html
Правда там 32-битное описывают, а не 64-битное.
Один момент хотел бы предложить. Чтобы понять соответствие между кодом C и Ассемблером, полезно рассмотреть команду mov и оператор присваивания.
Конечно все рассмотрим
Как получить список функций в .so или др. файле?
readelf покажет. Например readelf -Ws /lib/x86_64-linux-gnu/libc.so.6 | grep puts
https://stackoverflow.com/questions/34732/how-do-i-list-the-symbols-in-a-so-file
https://www.cs.swarthmore.edu/~newhall/unixhelp/compilecycle.html вот еще полезная ссылка
Каков формат .o-файла?
ELF файл это. Если конкретней - ELF 64-bit LSB relocatable. .so файлы это тоже ELF.
Да, кстати. Вот тут происходит загрузка ELF файла. http://lxr.free-electrons.com/source/fs/binfmt_elf.c#L667
Можно попробовать отследить весь путь, начиная от вызова execve()
только тут уже надо в ядро отладчиком тыкать.