Как я знаю, все регистры сегментов или селектора настроены на точный начальный адрес сегмента 4gb в плоской модели с защитой от 32 бит. Итак, как реализована функциональность сегмента стека, которая начинается с одного из верхних адресов и растет вниз, или функция сегмента кучи, которая растет вверх.Как различные сегменты установлены в 32-битном защищенном режиме?
Также как реализована часть памяти, принадлежащая ОС в адресном пространстве 4gb?
Я могу понять из вашего ответа. Итак, как OS устанавливает, что стек будет расти с более высокого адреса на более низкий адрес? А также как определяется начальный адрес стека для потока? – Kaustav
В X86 стек всегда растет. Это потому, что 'push' уменьшает' ESP' и 'pop' iincreases. Это по дизайну. О том, где находится стек, это зависит от ОС. Помните, что 32-битный процесс имеет 4 ГБ адресного пространства и каждый стек потока обычно составляет 1 МБ, поэтому есть много свободного места. – rodrigo
Что вы подразумеваете под каждым потоком стека? – Kaustav