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