Runtime Monitoring for Safety-Critical Embedded Systems