teite hat geschrieben:Frank Klemm hat geschrieben:
Die Audio-Task kommt nach jedem Hardwareinterrupt der Soundkarte
dran und gibt, wenn sie nichts mehr zu tun hat, die Rechenzeit ab.
Macht z.B. ASIO so.
Der Interrupt nützt natürlich nicht viel, wenn der Kernel selber nicht preemtive ist. Was ist denn ASIO? Sone Art asynchrones IO unter Windows? ;)
Audio Stream Input Output. Von Steinberg Media Technologies.
Der Scheduler ist uninteressant. Die Echtzeitverarbeitung findet
nicht in einer Applikation, sondern im Kartentreiber statt.
Übliche Latenzzeiten über AD-DA liegen bei 1,5 ms bis 5 ms,
wobei einiges davon die AD- und DA-Wandlung verursacht.
Ich will ja nichts sagen, aber bevor mal über Echtzeit den ...
Weiterhin empfinde ich die Scheduler der üblichen Betriebssysteme
ziemlich altertümlich.
Naja ich finde den Scheduler bei 2.6 schon einen erheblichen Fortschritt, grade auch bei sehr vielen Prozessen auf einer Maschine. Gut das betrifft eher meinen Arbeitsbereich als die Geschichte hier. ;)[/quote]
Der 2.6er hat endlich einen Scheduler auf Windows NT-Niveau.
Insgesamt sind aber beide Scheduler um den Faktor 1000
vom technisch Machbaren entfernt, wenn es um präzise
Zeitabläufe geht.
Probleme lauern wo ganz anders. Zum Beispiel kenne ich keine
einzige Echtzeitimplementierung eines Dateisystems. Zum Beispiel
habe ich einen Dateihandle zu einer Datei, und ich möchte immer
24 Kbyte/s aus dieser Datei lesen, egal, was andere Prozesse
machen.
Linux hat da z.B. sehr ernsthafte
Probleme mit FAT32. 24 kByte/s sind ein Problem selbst auf Platten,
die eigentlich 30...40 MByte/s schaffen.
Das kann verschiedene Ursachen haben. Die komische Linkliste bei FAT skaliert auch nicht wirklich.[/quote]
Solange ich die Datei sequentiell lese, spielt das ganze keine Rolle.
Positionieren in riesigen Dateien ist bei FAT etwas tricky, wenn
es O(ld(x)) statt O(1) sein soll.
Generell sind die ganzen Treiber eher selten auf Echtzeitbedingungen ausgerichtet, deswegen auch mein Einwand bezüglich RTOS.
Professionelle Karten kannst Du ohne entsprechende Treiber gar nicht verkaufen. Sieh' Dir mal Tests in der C't von etwas höherwertigen Soundkarten an. Dort wurde teilweise die Latenzzeit der Treiber
angegeben.
Insgesamt kann ich mich mit einem funktionierenden Treiber
auf der mitgelieferten Treiber-CD mehr anfreunden als mit
einem nicht existierenden unter QNX oder einem vollständig
fehlenden Audio-Interface unter VxWorks.
Weiterhin hast Du unter allen Betriebssystemen das Problem,
daß schlechte Treiber oder schlechte Hardware Dir die
Echtzeitfähigkeit versauen kann.
Und zu guter letzt muß auch die Echtzeit-Applikation so aufgebaut
sein, daß die zu lösenden Aufgaben machbar sind. Auch das ist
bei komplexen Applikationen nicht trivial.