QuarkTS — это кроссплатформенная встраиваемая операционная система с открытым исходным кодом для устройств с ограниченными ресурсами, использующая кооперативный многозадачный планировщик [1] [2] . Распространяется по лицензии MIT .
QuarkTS [3] разработан для микроконтроллеров с ограниченными ресурсами , имеет небольшое и простое ядро. Он в первую очередь написан на языке программирования C для простоты переносимости и обслуживания, хотя также существует порт, написанный на C++11 (QuarkTS++), а также библиотека для Arduino . QuarkTS не имеет специальных инструкций для целевого оборудования, что делает его потенциально переносимым на любую платформу и/или компилятор C/C++ . [3]
Операционная система построена на основе кооперативного квазистатического планировщика реального времени [4] [5] на основе архитектуры Time Triggered Architecture (TTA) [6], реализующей специализированную схему Round-Robin с связанной цепочкой и очередью событий для обеспечения настоящего приоритетного планирования FIFO (First-In, First-Out). Такой подход к планированию обеспечивает значительные преимущества по сравнению с упреждающим планированием, поскольку задачи управляют своим собственным жизненным циклом, возникает меньше проблем повторного входа, и задачи не прерываются произвольно другими задачами, а только в точках, определенных программистом [7] . Это позволяет пользователям создавать стабильное и предсказуемое событийно-управляемое многозадачное встроенное программное обеспечение, не беспокоясь о распространенных подводных камнях параллельных подходов, таких как проблемы совместного использования ресурсов, состояния гонки и тупиковые ситуации . [8]
Целью разработки QuarkTS является предоставление функциональности с использованием небольшой, простой и надежной реализации, что делает ее идеальной для микроконтроллеров с ограниченными ресурсами . В таких средах полностью вытесняющая RTOS может оказаться излишней [9] , внося ненужную сложность в разработку прошивки . Благодаря своему размеру и набору функций QuarkTS предназначен для преодоления разрыва между полнофункциональными RTOS и программированием на голом железе . QuarkTS предназначен для разработчиков встраиваемых систем, ищущих больше функциональности, чем предлагают базовые планировщики задач , избегая при этом накладных расходов и сложности полной RTOS , но при этом обеспечивая надежность и безопасность, типичные для более крупных систем.
QuarkTS также соответствует большинству стандартов кодирования MISRA-C-2012/MISRA-C++:2008 [10] Ассоциации по надежности программного обеспечения для автомобильной промышленности (MISRA) и SEI CERT C, обеспечивая безопасную, надежную и защищенную основу для встраиваемых приложений.
QuarkTS не имеет прямой зависимости от оборудования, что позволяет ему быть переносимым на многие платформы и компиляторы C [2] .
Следующие ядра успешно запустили QuarkTS: