Цитата(zltigo @ Mar 28 2010, 18:04)

Это не фича, это обманка, ибо "переключения задач" собственно быть не может

. Со стеком при прерывании задачи в произвольном месте все очень просто - либо он нужен такого размера каждой из задач, либо нет. Посему просто надо четко представлять необходимые размеры стеков для вытесняющих задач и комбинировать их с кооперативными задачами имеющими по определению общий стек.
Что такое "переключение задач" и почему его "быть не может" спорить не стану. Одно знаю точно: многопотоковость имела место. Да и не в этом вопрос.
Переформулирую: какие есть RTOS (или как их там, прошу к терминам не предираться), в которых не выделяется отдельный стек для каждой задачи, а используется общий? С целью экономии памяти, естественно.
Спасибо alcosar за ссылку про SST. На что-то похожее натыкался, когда читал про smx RTOS и One-Shot Tasks.
Я понимаю, что единый стек требует жертв. Например, в RTX166 Tiny нельзя использовать указатели на локальные переменные, так как стек "двигается" при переключении контекста. Видел также Salvo RTOS, где ограничения ещё более строгие, но подкупает крайняя нетребовательность к объёму памяти.
Все эти подходы имеют право на жизнь в зависимости от задачи. Я просто хочу понять, какие бывают варианты.