  This paper presents CARTOS, a charging-aware real-time operating system
designed to enhance the functionality of intermittently-powered batteryless
devices (IPDs) for various Internet of Things (IoT) applications. While IPDs
offer significant advantages such as extended lifespan and operability in
extreme environments, they pose unique challenges, including the need to ensure
forward progress of program execution amidst variable energy availability and
maintaining reliable real-time time behavior during power disruptions. To
address these challenges, CARTOS introduces a mixed-preemption scheduling model
that classifies tasks into computational and peripheral tasks, and ensures
their efficient and timely execution by adopting just-in-time checkpointing for
divisible computation tasks and uninterrupted execution for indivisible
peripheral tasks. CARTOS also supports processing chains of tasks with
precedence constraints and adapts its scheduling in response to environmental
changes to offer continuous execution under diverse conditions. CARTOS is
implemented with new APIs and components added to FreeRTOS but is designed for
portability to other embedded RTOSs. Through real hardware experiments and
simulations, CARTOS exhibits superior performance over state-of-the-art
methods, demonstrating that it can serve as a practical platform for developing
resilient, real-time sensing applications on IPDs.
