Aufgaben Embedded Systems

Gast #3997556
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.
Gast #3997735
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.. ;)
Gast #3998073
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.
#3998078
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.
#3998100
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.
#3998137
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 ?
#3998299
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.
#3999986
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.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.