PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Was sind Pufferüberläufe ? ? ?



Leistellenfreak
20.01.2003, 17:39
Hi Leute,

also ich hab FMS 32 Pro, das funktioniert auch echt absolut spitze.
Aber ich lese hier schon länger mit, und lese ständig was von Pufferüberläufen. Also ich hab damit noch nie irgendwelche Probleme gehabt, und hab diesen Soundkartenreset bei 0 Pufferüberläufen stehen.
Aber einfach der Interesse wegen, was ist überhaupt ein Pufferüberlauf, was bedeutet "Soundkarte kann nicht richtig ausgelesen werden" usw, wovon man hier ständig liest?
Welchen Sinn hat dieser Soundkartenreset?
Wäre schön wenn mir einer diese Fragen beantworten könnte.
Viele Grüße
Andre aus dem Sauerland

Buebchen
20.01.2003, 20:21
Ein Pufferüberlauf hat mit der Datenbeschaffung von der Soundkarte zu tun:

Man belegt die Soundkarte und fordert Daten davon mit einer bestimmten Samplerate (Abtastrate) an. Bei 11025 Hz heisst das eben 11025 Werte pro Sekunde. Damit man nicht jeden Wert einzeln abholen muss, wird zusätzlich ein - oder mehrere - <b>Puffer</b> vereinbart. z.B. 20000 Werte. Der Soundkartentreiber füllt diesen Puffer dann bis er voll ist und sendet dem anfordernden Programm dann eine Benachrichtigung, die auch die Adresse und die Anzahl der gespeicherten Werte beinhaltet.

Im einfachsten Fall hätte man nur einen Puffer. Dann passiert folgendes: Es werden 20000 Werte in den Puffer geschrieben und das Programm wird informiert, den Puffer zu bearbeiten. Bis das Programm dann einen neuen Puffer bereitstellt, können keine Daten mehr "aufgenommen" werden - Schließlich ist ja kein Puffer mehr da, den man beschreiben könnte. So entstehen "Lücken" in der Aufnahme. Bei FMS würde ein Teil des Signals einfach fehlen.

Um das zu umgehen arbeitet man mit 2 oder mehr Puffern. Man gibt dem Treiber z.B. zu Beginn direkt 2 Puffer zu je 20000 Werten an. Er füllt dann den einen - schickt die Benachrichtigung und macht dann mit dem zweiten Puffer direkt weiter. Es geht nichts verloren. Man muss dann nur dem ersten Puffer schnell genug bearbeiten, damit dieser wieder frei ist um vor dem vollständigen Befüllen des zweiten Puffers dem Treiber wieder zur Verfügung stellen. Dann werden die Daten lückenlos geschrieben und alles ist gut.

Der Haken: Ist der Rechner zu langsam und schafft es nicht rechtzeitig den ersten Puffer auszuwerten dann entsteht wieder so eine Lücke. Und das ist zu Deutsch ein Pufferüberlauf.

Wer das ganze mal Praktisch erleben will, kann sich mal zwei Biergläser nehmen, den Zapfhahn aufmachen und laufen lassen und dann versuchen, die Gläser so schnell leerzutrinken, dass immer ein leeres Glas bereitsteht und kein Bier daneben läuft ;-)

Der Reset der Soundkarte soll das ganze dann wohl wieder ins Lot bringen. Könnte ja auch der Treiber der Soundkarte sein, der an dem Problem beteiligt ist. Man weiss ja nicht, was der tut, wenn ihm kein Puffer mehr zur Verfügung steht...

Löschi
20.01.2003, 21:17
Na das nenn ich mal eine ausführliche und verständliche Erklärung. Allerdings muß ich aufpassen das bei soviel Input bei mir nix überläuft. ;o)

Buebchen
20.01.2003, 22:05
... Natürlich alles im Selbstversuch erprobt ;-)