Embedded systemen en firmware
Waarop moet worden gelet met betrekking tot overmatig stackgebruik bij een kleine microcontroller zonder MMU?
- ADe stack wordt automatisch onbeperkt groot, dus daar hoeft men niet op te letten
- BAls de stack overloopt, wordt altijd een foutmelding getoond
- CEen stackoverflow wordt niet direct gedetecteerd en kan stilzwijgend naburige gegevens beschadigen; daarom vermijdt men diepe recursie en grote lokale arrays en schat men het gebruik in
Antwoord en toelichting tonen
Antwoord: C. Een stackoverflow wordt niet direct gedetecteerd en kan stilzwijgend naburige gegevens beschadigen; daarom vermijdt men diepe recursie en grote lokale arrays en schat men het gebruik in
Bij pc-besturingssystemen kan een overloop worden gedetecteerd door voorbij de stack een pagina met toegangsverbod te plaatsen, maar bij microcontrollers zonder MMU ontbreekt dit mechanisme vaak en overschrijft een overlopende stack stilzwijgend variabelen en dergelijke daarachter. Het symptoom verschijnt elders, zodat de oorzaak moeilijk te vinden is. Men vermijdt diepe recursie en grote lokale arrays, schat het maximale gebruik met tools in en controleert of een markering aan het einde van de stack onbeschadigd is.