Embedded Systems und Firmware
Was ist bei einem kleinen Mikrocontroller ohne MMU im Hinblick auf übermäßige Stack-Nutzung zu beachten?
- ADer Stack wächst automatisch beliebig, daher muss man sich nicht darum kümmern
- BLäuft der Stack über, wird stets ein Fehlerbildschirm angezeigt
- CEin Stack-Überlauf wird nicht sofort erkannt und kann benachbarte Daten stillschweigend zerstören; daher sind tiefe Rekursion und große lokale Arrays zu vermeiden und der Verbrauch abzuschätzen
Antwort und Erläuterung anzeigen
Antwort: C. Ein Stack-Überlauf wird nicht sofort erkannt und kann benachbarte Daten stillschweigend zerstören; daher sind tiefe Rekursion und große lokale Arrays zu vermeiden und der Verbrauch abzuschätzen
Bei PC-Betriebssystemen lässt sich ein Überlauf erkennen, indem hinter dem Stack eine Seite mit Zugriffsverbot liegt; Mikrocontrollern ohne MMU fehlt dieser Mechanismus meist, und bei einem Stack-Überlauf werden dahinter liegende Variablen stillschweigend überschrieben. Die Symptome treten an anderer Stelle auf, was die Ursachensuche erschwert. Man vermeidet tiefe Rekursion und große lokale Arrays, schätzt die maximale Nutzung mit Werkzeugen ab oder markiert das Stack-Ende und prüft, ob die Markierung unversehrt ist.