Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.net  
   

Die mobilen Seiten von c++.net:
https://m.c-plusplus.net

  
C++ Forum :: Linux/Unix ::  periodisch Prozesse / Scheduling / C-Implementierungen     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
d(r)eadlock
Mitglied

Benutzerprofil
Anmeldungsdatum: 11.06.2015
Beiträge: 7
Beitrag d(r)eadlock Mitglied 17:48:14 20.05.2016   Titel:   periodisch Prozesse / Scheduling / C-Implementierungen            Zitieren

Hallo werte Menschen,

falls das das falsch forum ist bitte verschieben, freue mich in jedem Fall über tipps und Anregungen.

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? :confused:


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
PS: Ich habe mein Problem auch noch parallel in einem anderen Forum nur für Linux dargestellt, aber ich befürchte die Community dort ist recht inaktiv. Wenn jemand noch ein geeignetes Forum kennt, würd mich da auch über eine Adresse freuen.
d(r)eadlock
Mitglied

Benutzerprofil
Anmeldungsdatum: 11.06.2015
Beiträge: 7
Beitrag d(r)eadlock Mitglied 08:42:04 05.07.2016   Titel:              Zitieren

Falls es jemanden interessiert:

Prozesse periodisch "aufrufen": http://man7.org/linux/man-pages/man2/clock_nanosleep.2.html
Zwar werden die Prozesse nicht wirklich geschlossen und aufgeurfen (was im nachhinein bei meinem projekt auch keinen Vorteil gebracht hätte), sondern die Prozesse werden pausiert. Wann ein Prozess wieder arechenzeit erhält, ist aber nicht von dessen Laufzeit beeinflusst (wie das delay()). Es sei denn natürlich er rechnet langsamer, als dass er wieder aufgerufen wird :D

Scheduler festlegen (prio und Stategie): http://man7.org/linux/man-pages/man2/sched_setscheduler.2.html

Antwort auf dumme Frage (Prozess / Thread): http://www2.hs-fulda.de/~gross/betriebssysteme.bachelor/kap2.pdf
"jeder Prozess besitzt mindestens einen (initialen) Thread" (2-3)

Grüße :)
hustbaer
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.10.2006
Beiträge: 23335
Beitrag hustbaer Mitglied 21:40:24 13.07.2016   Titel:              Zitieren

Du könntest mal bei den relevanten Stack-Exchange Seiten gucken und/oder fragen.
Was OS-Zeugs angeht (Konfiguration, keine Programmierung) wäre das wohl http://superuser.com/
Was Programmierung angeht http://stackoverflow.com/


EDIT: Sehe gerade erst dass deine Frage viel älter ist als dein Nachtrag -> du weisst vermutlich schon alles was du wissen wolltest -> in dem Fall bitte einfach ignorieren. Sorry.

_________________
Until every person can enjoy all their human rights, we will not stop. I support Amnesty International. Will you?
https://www.amnesty.org / https://www.amnesty.de / https://www.amnesty.at


Zuletzt bearbeitet von hustbaer am 21:42:08 13.07.2016, insgesamt 1-mal bearbeitet
C++ Forum :: Linux/Unix ::  periodisch Prozesse / Scheduling / C-Implementierungen   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.net ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.