Kurz erklärt
Eine hohe Task-Priorität garantiert keine kurze Antwortzeit, wenn die Aufgabe auf eine Ressource wartet. Zeichnen Sie deshalb neben der Laufzeit auch Wartezeit und Besitzerwechsel des Mutex auf.
Die Blockierung sichtbar machen
Markieren Sie Anforderung, Erhalt und Freigabe einer gemeinsamen Ressource. Erfassen Sie zusätzlich die mittlere Aufgabe, die Rechenzeit verbraucht, ohne diese Ressource zu benötigen. So lässt sich erkennen, ob eine niedrige Priorität die dringende Aufgabe indirekt aufhält. FreeRTOS dokumentiert für Mutexes eine grundlegende Prioritätsvererbung FreeRTOS — Mutexes.
Den geschützten Abschnitt verkürzen
Prüfen Sie, ob innerhalb eines Mutex auf Netzwerkantworten, lange Transfers oder andere Sperren gewartet wird. Bereiten Sie Daten nach Möglichkeit außerhalb des geschützten Abschnitts vor. Eine andere Architektur kann einen eigenen Besitzer für eine Peripherie und eine begrenzte Auftragswarteschlange verwenden. Bewerten Sie dabei auch die zusätzliche Wartezeit, statt nur Sperren umzubenennen.
Unter konkurrierender Last messen
Erzeugen Sie gleichzeitig eine lang laufende Hintergrundaufgabe und häufige Zugriffe auf die gemeinsame Ressource. Vergleichen Sie die maximale Ende-zu-Ende-Latenz mit der vereinbarten Frist. Testen Sie verschachtelte Sperren besonders sorgfältig und halten Sie ihre Reihenfolge fest. Ein erfolgreicher Einzeltest ohne Konkurrenz belegt das Verhalten des ausgelasteten Systems nicht.
Checkliste für die Prüfung
- Ressourcenbesitz und Wartezeiten aufzeichnen.
- Langsame Operationen innerhalb von Sperren prüfen.
- Maximale Antwortzeit unter konkurrierender Last messen.
Häufige Fragen
Sind binäres Semaphor und Mutex austauschbar?
Nicht pauschal. Besitzregeln und Prioritätsvererbung unterscheiden sich. Wählen Sie das Objekt passend zu gegenseitigem Ausschluss oder Ereignissynchronisation.
Technische Quellen
Passende Entwicklungsleistung