Не вполне согласен. http://www.qnx.com/developers/docs/6.3.0SP3/neutrino/prog/arm_memory.html
Никто в здравом уме не будет делать в риалтайм задаче переключение процессов.
1. QNX ? 2. Вы справедливо ранее заметили, что можно сделать на любой ОС, но какими силами. Распределение реакции на события между ISR, драйверами и приложением(ями) не такая очевидная вещь в многообразном мире. Можно попытаться побольше запихнуть в драйвера режима ядра, эдакий подход типа RTAI. Но насколько это правильно и удобно? Это даже не затрагивая вопрос устойчивости и отладки.
Интересно, как в QNX бодались при портировании на ARM. Там это еще актуальнее, и в отличие от MS они об это довольно хорошо написали. Тоже ограничили число процессов и размер памяти процесса, чтобы использовать fast context switch.
Все же думаю, что при переходе на новую модель памяти WinCE6 первично было не быстродействие и надежность, а увеличение числа процессов и размера памяти процесса. Жертвой пало быстрое переключение контекста на ARM, и ни куда не деться от драйверов режима ядра. В блогах разработчиков MS всплывают “older ARM CPUs and their virtually-tagged caches” и уйма проблем с поддержанием когерентности их кешей и производительности в WinCE6. Стратегически, наверно, MS права, время ARM9 и т.п. проходит под натиском Атомов и Кортексов. Но WinCE6 жизнь разработчикам не факт, что облегчил, особливо под “older ARM”.