001
22.01.2007, 16:36 Uhr
ao
(Operator)
|
"nested" heißt "geschachtelt"
Wenn während der Ausführung einer Interrupt-Routine eine zweite Interrupt-Anforderung kommt, gibts zwei Möglichkeiten:
1. Die laufende ISR läuft ungestört zuende, und erst danach wird die zweite Anforderung bedient ("serialized interrupts"). Vorteil: Einfach und sicher zu implementieren, es gibt nur wenig Unwägbarkeiten, weil es nie mehr als einen laufenden Interrupt-Kontext gibt. Nachteil: Unter Umständen muss ein wichtiger Interrupt warten, bis ein weniger wichtiger behandelt wurde.
2. Die zweite Anforderung unterbricht die erste Routine und wird vorrangig bedient ("nested interrupts"). Nach Ende der zweiten ISR wird die erste an der Stelle wieder aufgenommen, an der sie verdrängt wurde. Vorteil: Wichtige Interrupts können weniger wichtige verdrängen und werden mit sehr kurzer Latenz bedient. Nachteil: Das System wird erheblich komplizierter, weil mehrere Kontexte gleichzeitig offen sein können. Sowas muss sehr sorgfältig entworfen werden, weil es fehleranfällig ist.
ao |