  Self-powered intermittent systems typically adopt runtime checkpointing as a
means to accumulate computation progress across power cycles and recover system
status from power failures. However, existing approaches based on the
checkpointing paradigm normally require system suspension and/or logging at
runtime. This paper presents a design which overcomes the drawbacks of
checkpointing-based approaches, to enable failure-resilient intermittent
systems. Our design allows accumulative execution and instant system recovery
under frequent power failures while enforcing the serializability of concurrent
task execution to improve computation progress and ensuring data consistency
without system suspension during runtime, by leveraging the characteristics of
data accessed in hybrid memory. We integrated the design into FreeRTOS running
on a Texas Instruments device. Experimental results show that our design can
still accumulate progress when the power source is too weak for
checkpointing-based approaches to make progress, and improves the computation
progress by up to 43% under a relatively strong power source, while reducing
the recovery time by at least 90%.

Operating Systems