Evgeny_CD, Архитектор (24.07.2013 21:53, просмотров: 482) ответил SciFi на Кстати, в тему: по ссылке рассказано, как устроен стек в RTOS RTX166 Tiny. В двух словах: все потоки делят общее пространство стека, при переключении контекста стек активной задачи сдвигается, освобождая место для следующей. Креативненько!
Мысль гениальная, но очень стремная при использовании "где попало". Чуваки гениально заметили, что стек непрерывен по своей сути. От "начала" и до текущего предела - внутри него НЕТ ДЫРОК, в отличие от различных видом менеджмента кучи - где дырки есть по определению.
В идеале должен быть microMMU. Т.е. задача сожрала стека, сколько пришлось. А когда ей еще надо - прирастили в адресном пространстве задачи кусочками по 256 байт еще немного.
Вот я только MMU встрачал на 1к минимум. Что расточительно для embedded мира.
Мысль о программном копировании тоже весьма здравая. Когда есть 100 Мгц процессор, есть запас по нему, и очень мало памяти - от чего бы запас по процу не разменять на экономию памяти.
Опасность состоит в том, что метод неявно предполагает, что у всех задач не случится "максимума стека"
А он может и случится, если не предпринимать мер. И тогда разработчики и юзера устройства узнают, что такое BSOD лично для них :)