418ImATeapot писал(а):
Говорю 64 не я!
Понял.
Цитата:
Сегментация удобна для всяких модулей, дллешек и т. п.
На самом деле не факт. Могу утверждать это на основе собственного опыта.
Цитата:
Кстати, смежный вопрос. Как сделать N стеков в одном плоском АП?
Просто.
Прикладные стеки создаются в конце прикладного адресного пространства по двум параметрам
резервный (максимальный) размер и
рабочий (минимальный) размер. При этом размер выделяемой под стек области складывается из резервного размера и размера прикладного стоп-фрейма с учетом выравнивания. Если между существующими стеками нет подходящей по размеру области, то вся стековая область расширяется вниз и в ее начале создается новый стек. При желании нижние границы стеков можно контролировать с помощью растущих вниз сегментов. Но у меня опционально поддерживается защита пространства ядра на уровне сегментации, поэтому я использую исключительно стоп-фреймы (хакерские эксперименты с циклически заворачивающимися стековыми сегментами не предлагать).
Стеки ядра имеют фиксированный размер 12 кб и размер стоп-фрейма 4 кб и располагаются последовательно. Стеки прерываний не используются. Первичная обработка прерывания происходит с использованием текущего стека ядра. На дне стеков ядра резервируется небольшой участок памяти специально для первичной обработки прерываний.