Forum: Offtopic Aufgaben Embedded Systems


von Iseh (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
könnte jemand mal in ein paar Worten erklären, wie man die 
Ringpuffer-Aufgabe (Aufgabe 14) angeht ?
Bei Aufgabe 15 wär ich auch für einige Tipps dankbar.

: Verschoben durch User
von Frank (Gast)


Lesenswert?

Hab die Aufgabe nicht gelesen, du scheinbar auch nicht.
Ansonsten hättest du die Frage präzisiert!

von Iseh (Gast)


Lesenswert?

Frank schrieb:
> Hab die Aufgabe nicht gelesen, du scheinbar auch nicht.

Was soll denn bitte diese Unterstellung ?
Ich kann die Frage nur konkretisieren, wenn ich an einer bestimmten 
Stelle der Aufgabe hänge und nicht weiterkomme.
Ich verstehe die Aufgabe aber im Allgemeinen schon nicht.

Da Daten kontinuierlich anfallen und in den Puffer geschrieben werden 
sollen, wird sich jedes Mal die höchstpriore Task (PT3) durchsetzen und 
den Puffer voll schreiben. Ende.
So viel zu meinem Verständnis der Aufgabe.

Daher wäre ich sehr dankbar, wenn jemand mit mehr Ahnung mal mit seinen 
eigenen Worten erklären könnte, wie das ganze funktionieren soll.

von bla (Gast)


Lesenswert?

Hmm... Ich behaupte auch, dass du die Aufgabe, die du hier gepostet 
hast, nicht gelesen hast. Ich habe sie auch nicht gelesen. Schau dir 
nochmal an was du gepostet hast.

von google (Gast)


Lesenswert?

Wenn man das PDF öffnet und nicht nur die Vorschau ansieht, findet man 
auch die Aufgaben 14 und 15.

von dunno.. (Gast)


Lesenswert?

Iseh schrieb:
> Da Daten kontinuierlich anfallen und in den Puffer geschrieben werden
> sollen, wird sich jedes Mal die höchstpriore Task (PT3) durchsetzen und
> den Puffer voll schreiben. Ende.
> So viel zu meinem Verständnis der Aufgabe.

CT1 ist aber höher Priorisiert. Sofern die DB also schnell genug ist, 
wird der Speicher schon auch noch geleert.. ;)

von Iseh (Gast)


Lesenswert?

dunno.. schrieb:
> CT1 ist aber höher Priorisiert. Sofern die DB also schnell genug ist,
> wird der Speicher schon auch noch geleert.. ;)

Je höher die Priorität der Task, umso kleiner die Ziffer daneben. Von 
daher macht das keinen Sinn.

von Stefan F. (Gast)


Lesenswert?

Nur weil ein Task höher priorisiert ist, muss das noch lange nicht 
bedeuten, dass er in einem Zeitfenster mehr Datensätze produziert, als 
der andere Task konsumiert.

Man muss berücksichtigen, wieviel Überschuss die produzierenden Tasks 
maximal erzeugen, so dass der Puffer nicht überläuft.

Ich denke, dass die konkreten Prioritäten dabei keine Rolle spielen.

von Karl H. (kbuchegg)


Lesenswert?

Stefan Us schrieb:

> Ich denke, dass die konkreten Prioritäten dabei keine Rolle spielen.

Ich denke, die Prioritäten sind gemeinsam mit der Erwähnung von 
preemptive Scheduling, nur deswegen aufgeführt um anzudeuten dass PT1 
jederzeit von PT3 unterbrochen werden kann. Erst dadurch entsteht ein 
Sinn in der Teilfrage b), die nach Synchronisationsnotwendigkeiten 
fragt.

von Eric B. (beric)


Lesenswert?

Falls der Ringpuffer so implementiert ist, dass schreibende Prozesse 
beim vollen Puffer blockiert werden und nicht einfach das älteste 
Element überschreiben, reicht eine Puffergröße von 1 schon aus.

von Florian O. (iseh)


Lesenswert?

Danke für die Antworten.

Was verhindert denn konkret ein dauerhaftes Laufen von PT3 (höchste 
Priorität und kontinuierliche Datenzufuhr) ?

von Karl H. (kbuchegg)


Lesenswert?

Florian Otte schrieb:
> Danke für die Antworten.
>
> Was verhindert denn konkret ein dauerhaftes Laufen von PT3 (höchste
> Priorität und kontinuierliche Datenzufuhr) ?

Das so ein System höchst widersinnig am Konzept eines Multitasking 
vorbei geht, wenn ein einzelner Task das komplette System lahmlegen 
kann. D.h. hier ist der Scheduler gefragt, auch den anderen Tasks eine 
Chance zu geben. Da den Mittelweg zu finden ist in der Praxis nicht so 
einfach.

Aber selbst dann: irgendwann ist die FiFo voll und dann muss PT3 warten 
und anderen Prozessen eine Chance geben. Für PT2 und PT1 sieht die Sache 
schlecht aus, die können ebenfalls nichts tun. Nur der DB-Task kann die 
FiFo ausräumen.

Die Frage ist im übrigen: was genau bedeutet "kontinuierlich"? In diesem 
Zusammenhang wird man unter kontinuierlich nicht unbedingt verstehen, 
dass nach dem Absetzen einer Message in den Ringbuffer bereit die 
nächste Message da ist. Denn irgendwann muss der Task ja auch erst mal 
seine Daten checken um die nächste Message generieren zu können.
'kontinuierlich' ist m.M.n. in der EDV ein sehr dehnbarer Begriff und 
bedeutet meist: in einigermassen regelmässigen Zeitabständen und nicht: 
in einem Rutsch immerzu und ohne Pause dazwischen.

: Bearbeitet durch User
von Florian O. (iseh)


Lesenswert?

Okay, also soll "kontinuierlich" vermutlich eher im Sinne von 
"regelmäßig" verstanden werden.

Zur Beantwortung von a) müsste man dann doch aber wissen, mit welcher 
Regelmäßigkeit Daten nachgeführt werden, um über eine mögliche Größe des 
Speichers urteilen zu können, oder ?

von Karl H. (kbuchegg)


Lesenswert?

Florian Otte schrieb:
> Okay, also soll "kontinuierlich" vermutlich eher im Sinne von
> "regelmäßig" verstanden werden.
>
> Zur Beantwortung von a) müsste man dann doch aber wissen, mit welcher
> Regelmäßigkeit Daten nachgeführt werden, um über eine mögliche Größe des
> Speichers urteilen zu können, oder ?

Da hier keien Zahlen angegeben sind, denke ich, dass eine Aufzählung der 
grundsätzlichen Zusammenhänge reicht.
Die Antwort könnte sonst ja auch lauten: Die Größe saug ich mir aus den 
Fingern.

Eines kann man auf jeden Fall sagen. Nämlich dass die Rate der 
Zulieferer zusammengenommen auf jeden Fall nicht größer sein darf, als 
die Rate in der der Datenbank Task Werte aus der FiFo raus nimmt. Denn 
sonst wird der Ringbuffer unweigerlich irgendwann voll. In 
Ausnahmefällen darf die Zuliefererrate etwas höher sein, aber nur so 
lange, so lange der Ringbuffer diesen Überschuss aufnehmen kann.

Ja ich weiß, das klingt nach einer Binsenweisheit. Allerdings ist dieser 
simple Zusammenhang vielen nicht wirklich klar.

von Purzel H. (hacky)


Lesenswert?

Kontinuierlich bedeutet zB mit 9600 Baud, dh all Millisekunde ein Byte. 
Wenn man gleichzeitig, dh waehrend 10ms einen LCD beschreibt, eine 
Floatingpoint rechnung ausfuehrt, kann man das Byte nicht bearbeiten, 
sondern muss es zwischenlagern, bis wieder Zeit vorhanden ist.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.