Мы тут с Andrew Tridgell малость пообщались, он привел аргумент в виде более постоянного времени цикла. С преемптивной ОС ошибка планирования не превышает 50uS, у меня с кооперативной порой достигает 2000uS за счет медленных задач, не умеющих звать yield() (коий можно натыкать куда надо, но я стараюсь не лезть в код за пределами HAL). Однко остался открытым вопрос о влиянии таких случаев на стабильность реального аппарата в воздухе: я считаю что однократные задержки не приводят к проблемам, вспоминая время стирания страницы флеша на 250 коптере, он же аппелирует к умозрительным аргументам стабильности и времени реакции. Именно поэтому я и сделал преемптивный мультитаск, дабы можно было сравнить реальное поведение одного аппарата с разными режимами многозадачности. У меня есть коптер на PixhawkLite, и я не вижу разницы в поведении относительно коптера с моей прошивкой и кооперативной многозадачностью, но таки ж это не аргумент.
Для справки, переключение контекста получилось 18 команд, сохраняющих/загружающих ~200 байт на каждое переключение, тогда как переключение добровольное это 3 команды и сохранение/восстановление 16 байт. Время добровольного переключения доли микросекунды, время принудительного примерно три микросекунды. При времени кванта 100 микросекунд оверхед составляет 3% - не много но... таки ж, CleanFlight обходится вообще без таких глупостей, а ведь как летает!