Appearance
11. Realtime
5
Multitasking #
Co-Operative #
- Tasks
- ... sind via HW Interrupts unterbrechbar
- ... Unterbrochener Task läuft allerdings nacher weiter
- Interrupts führen zu keinem Task-Rescheduling
- Tasks müssen kooperativ (nett) sein, damit Taskswitches statt finden können
- Ansatz für low-power IoT sinnvoll
Preemptive #
- Kernel kann bei HW-Interrupt Taskswitch forcieren
- Kernel zum Teil aber selber nicht preemptive (Big Kernel Lock)
- Volle Echtzeitfähigkeit heisst
- hohe Software komplexität
- Treiber müssen optimiert sein
14.05.2024
11. Realtime
6
Timeslicing #
- Kernel muss nach T ≤ 1 ms (einem Jiffy) reschedule ausführen
- Prioritätsgesteuert:
- Strikt nur Tasks mit höchster Priorität
- gefahr für Priority Inversion (starvation)
- General Purpose OS:
- keine Starvation
- ... da auch Tasks mit tiefer Prio an die Reihe kommen
- CFS (Completely Fair Scheduler) unter Linux
14.05.2024
11. Realtime
7
Rescheduling #
- Periodische Interrupts
- Hardware Timer
- ... bei Bedarf Tickless
- Im Kernel
- mit preemptive Multitasking möglich
- ISR kann rescheduling auslösen
14.05.2024
11. Realtime
9
Unterbrechbarkeit #
CONFIG_PREEMPT
undCONFIG_IRQ_FORCED_THREADING
- Verbessert RT-Eigenschaften
- Kernel wird unterbrechbarer
- Datendurchsatz sinkt
- Full Preemptive Patch
CONFIG_PREEMPT_RT
- ISR werden zu normalen Threads und dadurch unterbrechbar
- Treiberkompatibiliät nicht gewährleistet
- Kernel muss gepatcht werden
14.05.2024
11. Realtime
10
Anwendungen #
Sind Latenzzeiten bei folgenden Applikationen wichtig? Reicht Soft-Realtime?
- kontinuierlicher Datenlogger
- Oszilloskop
- Home PC
- Environmental Monitor
14.05.2024