Hallo werte Menschen,
ich bin hier neu und hoffe im richtigen Forum gelandet zu sein. Über Vorschläge und Anregungen würde ich mich auf jeden Fall freuen.
Ich beschreibe hier mal mein Problem und unten hab ich das Ganze nochmal für die lesefaulen zusammengefasst
Es sollen N Prozess periodisch aufgerufen werden, jeweils mit eigener Frequenz. Im Moment helfe ich mir, indem ich in die jeweiligen C-Programme ein delay() rein gepackt habe. Das ist nicht wirklich schön und ich bin mir auch nicht sicher, wie das delay() implementiert ist. Da ich ja soetwas wie ein weiches Echtzeitsystem brauche, habe ich mich mal mit dem Scheduler beschäftigt und war positiv überrascht. Es gibt wohl ein Prioritätsbereich, der genau für soetwas gemacht ist. Die Prozesse mit solchen Prioritäten kann man wohl nach RR oder FIFO schedulen.
- Aber wo/wie kann ich den zu verwendenden Scheduling-Algorithmus festlegen? Für Priorität 1 bis 99 würde sowohl RR also auch FIFO als Scheduling-Algorithmus gehen (http://man7.org/linux/man-pages/man7/sched.7.html).
- Wie rufe ich die Prozesse am besten Periodisch auf? So etwas müsste doch auch das OS können und nicht nur über Scripte realisierbar sein, nur habe ich bisher keine API gefunden.
- Und noch eine ziemlich dumme Frage: In den ganzen Dokumentationen geht es meistens um Threads. Irgendwie hab ich gerade nen Hirn-hänger: wenn ich einen Prozess unter Linux starte, dann habe ich ja nur einen main-Thread, das heißt wenn dieser Thread gestartet/beendet/gescheduled wird, dann ist das gleichbedeutend dass der Prozess gestartet/beendet/gescheduled wird, oder? Oder hat der Prozess da noch einen Overhead den ich vergesse?
Ziel: N verschiedene Prozesse periodisch aufrufen, feste Periode, Prozess je nach Priorität nicht unterbrechbar
Bisher: Im C-Programm ein delay() aufrufen (aus WiringPi.h), kein schließen und öffnen der Prozesse
Ansatz: nutzen des Schedulers des Linux-Kernels, "weiche Echtzeit", Scheduling-Algorithmus: SCHED_RR nutzen
Problem: wie/wo Prozesse periodisch aufrufen? etc
Plattform, OS: Raspberry Pi, Raspbian (basiert auf Debian 8, Linux-Kernel 4.1.19)
Sprache: Programme sind in C geschrieben, ein zusätzliches Programm/Komponente auch möglichst in C
Vielen Dank schonmal und Grüße