Стек потока
ОС сама резервирует место в виртуальном адресном пространстве регион для размещения стека потока. Для чего нужен стек - Вы знаете!
Глобальные переменные хранятся в специальном сегменте, а локальные в стеке.
|
![]()
![]()
![]()
|
080FF000
|
|
08000000
Указатель стека устанавливается в верхней части стека. Физическая память выделена двум страницам.
Вторая страница имеет флаг запрещения доступа.
По мере создания различных локальных переменных стек разрастается, по мере его заполнения происходит переход во вторую страницу. Но эта страница защищена. ОС будет извещена о попытке записи на защищенную страницу и обрабатывает её следующим образом: снимает флаг запрещения записи со второй страницы. Выделяет стеку третью страницу физической памяти и присваивает третьей странице атрибуты PAGE_READWRITE и флаг PAGE_GUARD.
предыдущаяследующая