Цитата(MrYuran @ Sep 7 2010, 12:49)

Кроме вытесняющей, бывает ещё и кооперативная многозадачность, которая дополнительной памяти практически не требует.
Это как? Что там, что там - сколько задач, столько и контекстов, стеков и struct task'ов.
Цитата(777777 @ Sep 7 2010, 12:19)

А как ее можно не запускать? Вряд ли хоть один проект может обойтись без прерываний, а обычно 90% работы выполняется в них. А что это, если не многозадачность?
Это не многозадачность, это асинхронная стейт-машина :-)
Цитата(sensor_ua @ Sep 7 2010, 07:19)

Я предпочитаю кооператив а-ля Protothreads - как на AVR, так и на других МК.
Кооперативность или вытесняемость - вещь, в общем-то перпендикулярная к методу организации передачи управления.
Цитата
Считаю, что в большинстве случаев (кроме узкозаточенных решений) критичная ко времени реагирования часть кода должна быть минимизирована и умещаться в обработчиках прерываний, а остальное спокойно работать в фоне. Расход памяти при кооперативе значительно меньше, но приходится платить рулением статическими переменными и решать несколько больше вопросов синхронизации.
Все это так, но прототреды и прочие завуалированные стейт-машины дико неудобны тем, что _весь_ код должен поддерживать асинхронность сверху донизу. В какой-то момент придется выбирать: либо память и честное переключение контекста, либо повеситься без мыла на прерываниях.