Prozesse im Kernel verwalten



  • Auf dem uCLinux laufen Prozesse, die vom CPU abgearbeitet werden müssen.
    uCLinux ist eine Distribution, die für Embedded-Systeme entwickelt worden ist. uClinux sollte aber nicht die Ursache des Problems sein.

    Um die laufenden Prozesse exakt zu nennen:

    Kernel-Prozesse
    Prozess A ( vom Benutzer definiert)
    Prozess B ( vom Benutzer definiert)

    Die Kernel-Prozesse werden von der CPU ständig abgearbeitet.
    Prozess A ist ein Prozess, der in bestimmten Zeitabständen regelmäßig abgearbeitet werden muss. Angenommen, Prozess A muss alle 10ms eine Aufgabe ausführen.
    Die CPU muss also alle 10ms die anderen Prozesse warten lassen und den Prozess A abarbeiten. Nachdem Prozess A abgearbeitet worden ist, darf die CPU die andere Prozesse abarbeiten.
    Die andere Prozesse sind nicht zeitabhängig. Wann diese abgearbeitet werden, ist hier nicht wichtig. Hauptsache, die werden irgendwann abgearbeitet.

    um besser zu erklären:

    0.........................10ms...........................................52ms..............................62ms......................................104ms..................114ms......usw.

    Nehmen wir an, Der Ablauf sieht wie folgt aus:

    Andere Prozesse = Kernel-Prozesse + Prozess B

    1. Andere Prozesse fangen bei 0ms an.

    2. Wenn Timer 10ms ist, muss die Andere Prozesse unterbrochen werden.

    3. Der Prozess A wird abgearbeitet.

    4. Nachdem der Prozess A komplett abgearbeitet worden ist, dürfen die Andere Prozesse starten.

    5. Dies muss so fortgesetzt werden.

    Es wurde versucht das Problem zu beheben, indem die Prioritäten rauf, bzw. runter gesetzt worden sind. Die höchste Priorität wurde für den Prozess A gesetzt. Trotzdem tritt dasselbe Problem auf, dass das Programm A nicht immer rechtzeitig seine Aufgaben ausführt, da die Anderen Prozesse zu viel Prozessorzeit wegnehmen. Wie kann man außer mit nice/setpriority dafür sorgen, dass das Programm A regelmäßig und rechtzeitig seine aufgaben ausführt?

    Ich hätte gerne eure Vorschläge gehört.

    Vielen Dank

    Azad


Anmelden zum Antworten