Стек потока под Windows 95, 98.
Особенностью в том, что размер стека составляет 1 Мб + 128 Кб. Структура:
В случае DOS при компиляции программ нужно было включать дополнительный программный код для конроля размера стека. В Windows 95, 98, NT этой проблемы нет, но возникает проблема контроля за выделением страниц физической памяти. Например,
VOID SomeFunc(…)
{
int Values[4000];
Values[0]=0;
}
Физическая память
Физическая память
Зарезервированная страница
Зарезервированная страница
| |
переменная локальная
четыре страницы
При создании стека резервируется 16000 байт. Физическая память выделена только двум страницам, поэтому при компиляции программы вставляется дополнительный код. Этот дополнительный код работает по следующему алгоритму:
nByteNeeded = nByteNeeded – размер страницы
| |
ОС выделяет физическую память
| |
Указатель стека смещается на страницу вниз
| |
Определение положения указателя стека
| |
Определение размера страницы
| |