Электронный учебник:


Курс лекций:


Дополнительно:

Практикум:



Наши хостеры:

Торшеров светильники.

--------------------------

Стек потока

            ОС сама резервирует место в виртуальном адресном пространстве регион для размещения стека потока. Для чего нужен стек - Вы знаете!

            Глобальные переменные хранятся в специальном сегменте, а локальные в стеке.

программный сегмент

сегмент данных

 
Image                                               

ImageImageImageImage

Страница физической памяти PAGE_READWRITE

Страница физической памяти c флагом PAGE_GUARD

Зарезервированная страница

.

.

.

Зарезервированная страница

.

.

.

Программный код

 
ImageImageImage            Рассмотрим стек Windows NT, 2000. Под стек по умолчанию выделяется регион размером 1 Мб и передаются две страницы физической памяти. Значения устанавливаемые по умолчанию можно изменять в программе. Размер физической памяти можно менять при вызове функции CreateThread(…). Так выглядит стек при создании:

080FF000

Image
 

08000000

            Указатель стека устанавливается в верхней части стека. Физическая память выделена двум страницам.

            Вторая страница имеет флаг запрещения доступа.

            По мере создания различных локальных переменных стек разрастается, по мере его заполнения происходит переход во вторую страницу. Но эта страница защищена. ОС будет извещена о попытке записи на защищенную страницу и обрабатывает её следующим образом: снимает флаг запрещения записи со второй страницы. Выделяет стеку третью страницу физической памяти и присваивает третьей странице атрибуты PAGE_READWRITE и флаг PAGE_GUARD.

предыдущаяследующая