Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: Linux Forum Linux-Web.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

20.05.2016, 13:38

periodisch Prozesse / Scheduling / C-Implementierungen

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 :D

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

Thema bewerten