Цитата
Но меня смущает то, что при этом переходе надо отрубить/перенастроить все прерывания - если что-то забыть - то управление пойдет в основную программу, что плохо.
Перенастроить прерывания не так уж и сложно. Для каждой вашей "программы" делаете доп. функции open и close к примеру. В open разрешаете все необходимые прерывания, в close их запрещаете.
Цитата
Кроме того, в оперативке по прежнему висят все глобальные объекты, хотя текущей "программе" они не нужны.
А зачем вам глобальные объекты, которые использутся только в одной функции? Сделайте их локальными.