Задачи имеют свои собственные стеки, поэтому значения локальных переменных сохраняются.
ОСРВ работают совершенно иначе, чем "нормальные" ОС.
Если существует только одна задача с наивысшим приоритетом (и многие другие с более низкими приоритетами), она должна вернуть управление системе. Это происходит, когда задача переходит в состояние приостановлено или заблокировано. В противном случае никогда не будет выгружено. (Конечно, прерывания будут срабатывать).
Как пример: если вы запускаете задачи A и B , приоритет задачи A выше, чем B , если задача A не вернет управление системе, войдя в состояние «приостановлено» или «заблокировано» (например, в ожидании уведомления, семафора, мьютекса или чего-то еще), задача A будет есть 100% времени выполнения и задания B 0% (ноль)
Если существует более одной задачи с одинаковым наивысшим приоритетом, произойдет вытеснение из циклического перебора. В любом случае, это очень необычная ситуация при разработке встроенных RTOS.