формат elf
Книга присвячена сімейства операційних систем UNIX і містить інформацію про принципи організації, ідеології та архітектури, які об'єднують різні версії цієї операційної системи.
У книзі розглядаються: архітектура ядра UNIX (підсистеми вводу / виводу, управління пам'яттю і процесами, а також файлова підсистема), програмний інтерфейс UNIX (системні виклики і основні бібліотечні функції), призначена для користувача середовище (командний інтерпретатор shell, основні команди і утиліти) і мережна підтримка в UNIX (протоколів сімейства TCP / IP, архітектура мережевої підсистеми, програмні інтерфейси сокетов і TLI).
Для широкого кола користувачів
Книга: Операційна система UNIX
формат ELF
Формат ELF має файли кількох типів, які до сих пір ми називали по-різному, наприклад, виконуваний файл або об'єктний файл. Проте стандарт ELF розрізняє такі типи:
1. Переміщуваний файл (relocatable file), який зберігає інструкції і дані, які можуть бути пов'язані з іншими об'єктними файлами. Результатом такого зв'язування може бути виконуваний файл або розділяється об'єктний файл.
2. розділяється об'єктний файл (shared object file) також містить інструкції і дані, але може бути використаний двома способами. У першому випадку, він може бути пов'язаний з іншими переміщуються файлами і розділяються об'єктними файлами, в результаті буде створено новий об'єктний файл. У другому випадку, при запуску програми на виконання операційна система може динамічно зв'язати його з виконуваним файлом програми, в результаті чого буде створено виконуваний образ програми. В останньому випадку мова йде про поділюваних бібліотеках.
3. Виконавчий файл зберігає повний опис, що дозволяє системі створити образ процесу. Він містить інструкції, дані, опис необхідних поділюваних об'єктних файлів, а також необхідну символьну і налагодження.
На рис. 2.4 приведена структура виконуваного файлу, за допомогою якого операційна система може створити образ програми і запустити програму на виконання.
Мал. 2.4. Структура виконуваного файлу в форматі ELF
Тема має фіксоване розташування у файлі. Інші компоненти розміщуються відповідно до інформації, що зберігається в заголовку. Таким чином заголовок містить загальний опис структури файлу, розташування окремих компонентів і їх розміри.
Оскільки заголовок ELF-файлу визначає його структуру, розглянемо його більш докладно (табл. 2.4).
Таблиця 2.3. Поля заголовка ELF-файлу
Інформація, що міститься в таблиці заголовків програми, вказує ядру, як створити образ процесу з сегментів. Більшість сегментів копіюються (відображаються) в пам'ять і являють собою відповідні сегменти процесу при його виконанні, наприклад, сегменти коду або даних.
Кожен заголовок сегмента програми описує один сегмент і містить наступну інформацію:
Тип сегмента і дії операційної системи з даним сегментом
Розташування сегмента в файлі
Розмір сегмента в файлі
Розмір сегмента в пам'яті
Прапори доступу до сегменту (запис, читання, виконання)
Ми ще повернемося до формату ELF в розділі 3 при обговоренні організації віртуальної пам'яті процесу, а поки перейдемо до наступного поширеній формату - COFF.