Threads und System Interrupts



  • Hi,

    ich möchte auf einem multicore system 2 workerthreads bauen, die sich die Arbeit teilen. Beide laufen in einer Endlosschleife und haben für ihre Aufgabe 10ms Zeit. Wenn sie früher fertig sind, dürfen sie die noch die übrige Differenz "schlafen". Ich benutze also keine Timer, sondern lese am Anfang und Ende der Schleife die Zeit aus und bilde die Differenz (macht man das in der Regel so?)
    Nun meine Frage: Wie sorge ich dafür, dass die Beiden Threads nicht bei ihrer Arbeit durch irgendwelche Interrupts(I/O, Hardware) unterbrochen werden und auf jeden Fall unter 10ms bleiben? Geht das überhaupt in Multitasking Betriebssystemen oder braucht man da schon ein Echzeitsystem.
    Zur Info: ich arbeite auf Linux mit dem CFS (Scheduler).

    Viele Grüße
    Rolf



  • Niemand eine Idee?

    Viele Grüße
    Robert



  • Kannst du nicht garantieren. Du brauchst ein RT Linux.



  • Garantieren kannst du mit einem normalen Kernel garnix, nein. Leider.

    Mit selektierter Hardware selektierten Treiber + Massnahmen wie Thread-Priorität und/oder Prozess-Priorität erhöhen, kommt man allerdings recht nahe dran.

    BTW: selbst mit einem RT-Kernel hast du - ohne selektierte Hardware - keine Garantien. Es gibt immernoch den SMI, und der ist nicht maskierbar. Wird oft vom BIOS zu verwendet um z.B. Legacy-USB Support anzubieten (z.B. machen dass ne USB Tastatur tut als ob sie ne PS/2 Tastatur wäre), oder auch manchmal um Chipset Fehler zu maskieren. Wenn dein Board letzteres macht, bist du u.U. angeschissen. (Obwohl ich bezweifle, dass derartige Interrupts oft ne ganze Millisekunde brauchen. Bloss garantieren wird dir keiner, dass sie es nicht tun.)


Log in to reply