Memory Scrubbing ist ein präventiver Sicherheitsmechanismus in Lyx (v0.9.0+), der darauf abzielt, „schleichende“ Speicherfehler (Single Event Upsets / Bit-Flips) im Programmbereich (Code-Segment) zu erkennen, bevor sie ausgeführt werden.
Dies ist besonders kritisch für Systeme, die kosmischer Strahlung ausgesetzt sind (Aerospace), da ein Bit-Flip in einer Instruktion zu unvorhersehbarem Programmverhalten führen kann.
Das Scrubbing wird durch das Modul- oder Funktions-Attribut @integrity mit dem Modus scrubbed konfiguriert.
@integrity(mode: scrubbed, interval: 100) unit nav.core;
Im Gegensatz zum Software Lockstep, der während der Berechnung prüft, arbeitet das Scrubbing als Hintergrundprozess oder periodischer Interrupt:
.meta_safe verglichen (Triple Modular Redundancy).Entwickler können den Scrubbing-Status auch manuell innerhalb der Applikationslogik abfragen, um auf erkannte Fehler zu reagieren:
fn main(): int64 {
if (!VerifyIntegrity()) {
// Notfall-Prozedur: Systemneustart oder Umschalten auf Backup-Computer
panic("Code corruption detected via Memory Scrubbing");
}
return 0;
}
| Merkmal | Beschreibung |
|---|---|
| Vorteil | Erkennt Fehler in passiven Codeteilen, bevor diese aufgerufen werden. |
| Vorteil | Geringerer Performance-Impact pro Instruktion im Vergleich zu Lockstep. |
| Nachteil | Zwischen zwei Sweeps besteht ein kleines Zeitfenster, in dem ein Fehler unentdeckt bleiben kann (abhängig vom Intervall). |
| Einschränkung | Erfordert die .meta_safe Sektion im ELF-Header für den TMR-Vergleich. |