next up previous contents
Next: Speichermanagement Up: Internetserver Previous: Internetserver

   
Synchronisation und Geschwindigkeitsoptimierung

Die Bildwiederholfrequenz der Internetkamera soll möglichst groß sein. Um bei jeder Anfrage des Clients ein neues Bild zu übertragen, ist es sinnvoll, den Task des HTTP-Servers, den JPEG-Task und den FPGA-Task zu synchronisieren. Sonst kann es besonders bei schnellen Übertragungsmedien, wie z.B. Ethernet, passieren, dass ein Bild mehrfach zum Client übertragen wird.
Eine Mehrfachübertragung tritt auf, wenn ein Client schneller eine neue Anfrage startet als der JPEG-Task ein neues Bild komprimiert hat. Wenn die Tasks nicht synchronisiert sind, wird in diesem Fall der HTTP-Task das alte Bild noch einmal senden.
Die Kommunikation zwischen den Tasks geschieht mit Hilfe von binären Semaphoren (siehe Abschnitt 2.5). Abbildung 3.8 zeigt den zeitlichen Verlauf der Taskabarbeitung des MPC860 für den Fall der Synchronisation. Der FPGA-Task besitzt die höchste Priorität, gefolgt von dem JPEG-Task und dem HTTP-Task mit der niedrigste Priorität der drei Tasks.
Zum Zeitpunkt 6,73 Sekunden befinden sich der JPEG-Task und der FPGA-Task im blockierten Zustand (pended). Sie warten jeweils auf ein Semaphor. Hat der HTTP-Server ein Bild gesendet, gibt er das Semaphor 1 frei, die den JPEG-Task blockiert. Der JPEG-Task gibt sofort das Semaphor 2 für den FPGA-Task frei. Da er die größte Priorität hat bekommt der nun unblockierte FPGA-Task die Rechenzeit des Prozessor zugeteilt (executing). Hat der FPGA-Task nach 70,412ms ein Bild aus dem SRAM-Speicher der Adapterplatine ausgelesen, blockiert er sich selbst durch das Anfordern des Semaphors 2. Automatisch bekommt der Task mit der nächst niedrigeren Priorität, die Rechenzeit, in diesem Fall der JPEG-Task. Er komprimiert das Bild in 230,342ms, und setzt sich danach in den Zustand blockiert, durch Anfordern des Semaphors 1. Jetzt bekommt der HTTP-Task die Rechenzeit. Erfolgt oder erfolgte in der Zwischenzeit eine Anfrage durch den Client, kann der HTTP-Server das neue Bild übertragen und der Zyklus beginnt von vorne.

  
Abbildung 3.8: Taskabarbeitung ohne Timeout



  
Abbildung 3.9: Taskabarbeitung mit Timeout


Für einen Auslesezyklus benötigt die Internetkamera in diesem Beispiel 333,919ms, so dass eine maximale Bildwiederholfrequenz von ca. 3 Bildern pro Sekunde erreicht wird.
Das Semaphor 2 besitzt einen Timeout von ca. 1,65s, das heißt, sie wechselt automatisch nach 1,65s in den unblockierten Zustand. Dieser Mechanismus wird dazu verwendet, das Bild im Speicher auch ohne Anfrage des Clients periodisch zu aktualisieren. Ohne diesen Timeout würde der HTTP-Server nach langen Ruhepausen ein veraltetes Bild zum Client senden. Abbildung 3.9 zeigt den zeitlichen Verlauf der Taskabarbeitung für diesen Fall.
next up previous contents
Next: Speichermanagement Up: Internetserver Previous: Internetserver
Thorsten Thormaehlen
2000-03-27