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


Курс лекций:


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

Практикум:



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

Стек потока под Windows 95, 98

64 Кб

СТЕК

64 Кб

 
ImageImage            Особенностью в том, что размер стека составляет 1 Мб + 128 Кб. Структура:            

Функции компилятора для контроля стека.

            В случае DOS при компиляции программ нужно было включать дополнительный программный код для контроля размера стека. В Windows 95, 98, NT этой проблемы нет, но возникает проблема контроля за выделением страниц физической памяти. Например,

VOID SomeFunc(…)

{

int Values[4000];

Values[0]=0;

}

ImageImageImage

Физическая память

Физическая память

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

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

 
Image            переменная локальная

четыре страницы

            При создании стека резервируется 16000 байт. Физическая память выделена только двум страницам, поэтому при компиляции программы вставляется дополнительный код. Этот дополнительный код работает по следующему алгоритму:

Image
 

ImageImageImageImage

nByteNeeded = nByteNeeded – размер страницы

 
Image

ОС выделяет физическую память

 
Image

Запись на страницу

 
Image

Указатель стека смещается на страницу вниз

 
ImageОвал: ВыходImageБлок-схема: решение: nByteNeeded > размера страницыImage

Определение положения указателя стека

 
Image

Определение размера страницы

 
                       

Image
 

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