10.3.2 Стек

Предыдущая  Содержание  Следующая V*D*V

Программный стек на системах со стандартным Linux растёт по запросу. Это стало возможным благодаря интеллектуальному обработчику ошибки страницы. Стек растёт вниз от верхней части сегмента данных пространства пользователя. Растущий стек ограничен только собственной растущей "кучей" программы, которая растёт в обратном направлении, начиная с конца bss.

На системах без MMU нет возможности для реализации обработчика ошибки страницы и, следовательно, рост стека по требованию невозможен. Единственным предлагаемым здесь uClinux решением является фиксированный размер стека. Этот размер стека задаётся в момент компиляции и сохраняется как часть образа исполняемого приложения.

Как видно из предыдущего раздела, заголовок bFLT имеет запись под названием stack_size для хранения размера стека, резервируемого загрузчиком при запуске программы. Теперь разработчик должен позаботится, чтобы сделать хорошее предположение о максимальном размере стека, необходимом программе, и сделать его доступным в момент создания двоичного образа.

 

Предыдущая  Содержание  Следующая