[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 Виртуальная память пользователя

Диаграмма на следующей странице показывает виртуальную память
пользователя. Она организована из трех сегментов: текст, данные и
стек. Текстовый сегмент - это просто выполняемый код. Сегмент данных
используется для хранения внешних (external) и статических (static)
переменных. Он содержит инициализированные и неинициализированные
данные. Неинициализированные данные автоматически устанавливаются
равными нулю при входе в программу. Адрес внешней переменной etext
обозначает конец текстового сегмента. Конец инициализированных и
неинициализированных данных обозначен адресом внешних переменных edata
и end, соответственно. Переменные etext, edata и end - целые.
Первоначально, граница выделяемой памяти программы - это адрес end.
Граница выделяемой памяти может изменяться при вызове системных
вызовов или библиотечных функций управления памятью. Однако, адреса
трех внешних переменных etext, edata и end неизменны.
Стек программы используется для хранения аргументов функций и ее
локальных (automatic) переменных. Стек также используется для спасения
регистров при вызове функции. Расположение вершины стека
труднодоступно.
Любая попытка исправить память между концом данных и вершиной стека
может привести к порче памяти. Также недоступна память, расположенная
ниже конца стека.
Ссылка: end(3C)
                   ВИРТУАЛЬНАЯ ПАМЯТЬ ПОЛЬЗОВАТЕЛЯ