Перейти к основному содержимому

Структура программы

Во время выполнения, все данные о программе хранятся в оперативной памяти. Операционная система может установить разные возможности по доступу к различным областям памяти (например, область может быть доступна только для чтения).

Операционные системы выстраивают виртуальное адресное пространство пользовательской задачи, разделив его на 4 секции.

Секция кода

В ней хранится машинный код для исполнения. Доступна только для чтения.

Секция данных

Содержит глобальные переменные, для которых в программе задано начальное значение. Образ секции должен хранится в исполняемом файле.

Секция неициализированных данных

Часто ещё называют секция BSS (Blank Static Storage). Предназначена для переменных, чьё значение не задано. В исполняемом файле хранится только размер секции.

Принципиальное отличие от секции данных заключается в том, что по ходу выполнения программы размер секции BSS может увеличиваться, что позволяет создавать новые переменные на этапе выполнения. Выделение дополнительной памяти осуществляется с помощью системных вызовов.

Секция стека

Используется для хранения локальных переменных в подпрограммах и адресов возврата из подпрограмм. Исполняемый файл не содержит никакой информации о секции стека.


Источник: Столяров — Программирование, том 2, раздел 3.3.2.