Книга: Разработка ядра Linux
Маленький стек фиксированного размера
Маленький стек фиксированного размера
Пользовательские программы могут "отдохнуть" вместе со своими тоннами статически выделяемых переменных в стеке, включая структуры большого размера и многоэлементные массивы. Такое поведение является законным в режиме задачи, так как область стека пользовательских программ может динамически увеличиваться в размере (разработчики, которые писали программы под старые и не очень интеллектуальные операционные системы, как, например, DOS, могут вспомнить то время, когда даже стек пользовательских программ имел фиксированный размер).
Стек, доступный в режиме ядра, не является ни большим, ни динамически изменяемым, он мал по объему и имеет фиксированный размер. Размер стека зависит от аппаратной платформы. Для платформы x86 размер стека может быть сконфигурирован на этапе компиляции и быть равным 4 или 8 Кбайт. Исторически так сложилось, что размер стека ядра равен двум страницам памяти, что соответствует 8 Кбайт для 32-разрядных аппаратных платформ и 16 Кбайт — для 64-разрядных. Этот размер фиксирован. Каждый процесс получает свою область стека.
Более подробное обсуждение использования стека в режиме ядра смотрите в следующих главах.
- Класс стек
- Уменьшение размера, занимаемого индексами
- 9.2.1. Более строгая реализация стека
- 3.2 Сетевой стек Windows NT
- 9.5.3. Маленький секрет User Agent
- Стеки на основе односвязных списков
- Создание подстановки из фиксированного набора значений
- 8.6. Росписи по стеклу и керамике
- Статическое выделение памяти в стеке
- Явное задание размера памяти
- 3.2.1.4. Изменение размера: realloc()
- Глава 3 Альтернативные стеки протоколов