Hi Martin, Am Wednesday 11 June 2003 10:11 schrieb Martin Langer:
Umfeld: Ich entwickle ein Messsystem auf auf einem Pentium 233 unter SuSE 2.4.10 und GnuC. Externe Daten werden von einem Abtastsystem ueber einen Treiber im Interruptbetrieb mit bis zu 5,6 kHz aufgenommen.
Du suchst ein "Realtime Linux"?
Ich moechte die Prioritaet der diesen Treiber verwendenden Prozesse erhoehen, um sicherzustellen, dass sie auch dann Rechenzeit bekommen, wenn neue Messdaten vorliegen. Die
Normal geht das mit dem Systemruf 'nice'. Linux unterstüzt AFAIR standardmässig nicht RT, sondern nur "weiche Echtzeit"(Die Ausführung ist nicht garantiert). Es gibt aber die Möglichkeit den Kernel zu patchen ...
Problem: Ich wuerde gerne die statische Prioritaet der betreffenden Prozesse mit sched_setschedluler() erhoehen und die Policy SCHED_FIFO verwenden. Das Makro _POSIX_PRIORITY_SCHEDULING existiert und hat den Wert 1. Ich kann die so eingestellten Parameter mit schd_getscheduler() und _sched_getparam() auch auslesen.
Es gibt noch SCHED_RR, was AFAIK die Interrupts benutzen. Genauer kannst Du das hier nachlesen(besser als meine Tips): http://www.oreilly.de/german/freebooks/linuxdrive2ger/book1.html oder in '/usr/src/linux/Documentation/'
/proc/$pid/stat enthaelt auf meinem System nur den nice-Wert und nicht die statische Prioritaet.
s.o. man nice
2. Kann es sein, das die entsprechenden Funtionalitaeten auf dem System gar nicht implementiert sind bzw. bei der Installation
Doch schon, aber eben keine "harte Echtezeit"... Ciao Andre