Verständnisproblem Stack vs. Buffer
-
Hallo,
ich beschäftige mich seit paar Wochen mit Software Architektur, welche dann später in C umgesetzt wird und hab ein paar Verständnis Fragen.
In dem System, mit welchem ich arbeite, gibt es verschiedene SW Komponenten die PDU untereinander verschicken und dementsprechend einen Buffer für die Speicherung haben.
1. Frage: Ein Buffer bedeutet in dem Sinn allokierter Speicher im RAM oder?
2. Frage: Wenn nun eine SW-Komponente einen Stack für die PDU anbietet, heißt das, dass ein Stack-Buffer zur Verfügung steht in dem die PDU gespeichert werden? Ich habe etwas das anschauliche Problem, dass mir der genaue Unterschied zwischen einem Buffer und einem Stack nicht ganz verständlich ist. Ist ein Stack ein Buffer der die Reihenfolge der Befehle/Nachrichten berücksichtig (LIFO,FIFO, usw.?)
Falls es hier das falsche Forum für solche Fragen ist, wäre ich froh, wenn mir jemand dann sagen könnte wo ich die Fragen stellen kann und diese dann auch beantwortet werden können. Vielen Dank.
Azador.
-
Ein Stack ist ein FILO-Puffer, auf Deutsch trefflich mit "Keller" umschrieben.
1. Frage: Ein Buffer bedeutet in dem Sinn allokierter Speicher im RAM oder?
Ja, üblicherweise.
Aber einen Stack mußt du nicht unbedingt auf einen zusammenhängenden Bereich abbilden,
zB könntest du auch eine verlinkte Liste verwenden.
-
Danke schon mal für die Antwort.
Ich hab da gleich noch die nächste Frage. So wie du es schreibst bedeutet es, dass ein Puffer ein zusammenhängender Bereich ist während der Stack es nicht unbedingt sein muss. Oder?
Mein Wissen was das angeht ist halt sehr dünn, deshalb kann ich ad hoc nichts mit dem Begriff verlinkte Liste anfangen.
-
flamer schrieb:
FILO
LIFO
-
In dem Zusammenhang (Kommunikation) kenne ich den Begriff Stack eigentlich eher als Bild für die Schichtarchitektur. Bist du sicher dass Stack hier als Datenstruktur gemeint ist?
-
Du meinst damit Stack als Begriff für den Überblick über die verschiedenen Schichten?
Nein, ich mein Stack als Datenspeicher für PDUs (genauer gesagt I(nteraction)-PDUs)
-
volkard schrieb:
LIFO
Sorry, bin kein Informatiker.
Aber ist nicht FILO und LIFO das gleiche?
-
flamer schrieb:
volkard schrieb:
LIFO
Sorry, bin kein Informatiker.
Aber ist nicht FILO und LIFO das gleiche?First In --- Last Out
Last In --- First Out
-
Neeeein! schrieb:
flamer schrieb:
volkard schrieb:
LIFO
Sorry, bin kein Informatiker.
Aber ist nicht FILO und LIFO das gleiche?First In --- Last Out
Last In --- First Out
Ahh.... Sorry. Du hast natürlich recht. Volkard hat keine Ahnung
-
flamer schrieb:
Aber ist nicht FILO und LIFO das gleiche?
klar! genauso wie FIFO und LILO. nur kann man nach FILO und LILO kaum googlen.
-
Aaaargh schrieb:
Volkard hat keine Ahnung
ERfahrungsgemäß sollte man erwägen, auf ihn zu hören.
-
Du meinst damit Stack als Begriff für den Überblick über die verschiedenen Schichten?
Nein, ich mein Stack als Datenspeicher für PDUs (genauer gesagt I(nteraction)-PDUs)
Nachdem ich jetzt weiß, was PDU heißen könnte
( http://de.wikipedia.org/wiki/PDU )
finde ich Bashars Annahme nachvollziehbar. (Auf den sollte man eh auch hören)
Also im Zweifel nochmals deine Annahmen prüfen.Ein Puffer im Speicher ist einfach eine Folge von Bytes, und zwar genau
nacheinander. Der hat eine Grenze am Anfang und eine am Ende, daher kann es
Pufferüberläufe geben, wenn der Puffer zu klein ist.Eine Liste kann aus vielen verschiedenen Speicherbereichen bestehen, da steht
dann zB ein Wert drinnen und die Adresse des nächsten Speicherbereichs. Deshalb
können Listen nicht so leicht überlaufen.Einen Stack kannst du aus beidem bauen.
-
flamer schrieb:
Ein Puffer im Speicher ist einfach eine Folge von Bytes, und zwar genau nacheinander.
Es gibt auch Ringpuffer. Dann müssen aufeinanderfolgende Daten nicht an aufeinanderfolgenden Adressen liegen.
Im Kontext "Netzwerk" werden die zum Beispiel benutzt, um Abstürze durch Speichermangel zu verhindern.
-
Christoph schrieb:
Es gibt auch Ringpuffer.
damit hast du die zweite bedeutung des wortes verraten.
mit puffer kann auch schlicht ein zwischenspeicher gemeint sein, dabei ist ganz egal, wie er aufgebaut ist.
-
flamer schrieb:
Du meinst damit Stack als Begriff für den Überblick über die verschiedenen Schichten?
Nein, ich mein Stack als Datenspeicher für PDUs (genauer gesagt I(nteraction)-PDUs)Nachdem ich jetzt weiß, was PDU heißen könnte
( http://de.wikipedia.org/wiki/PDU )wenn du mal weiter googlest, kriegste raus dass, 'i-pdus' irgendwas mit OSEK zu tun haben. und das wiederum ist hauptsächlich eine art betriebssystem mit hardkodierten tasks.
-
Vielen Dank. Die Antworten haben mir weitergeholfen und das Thema ist für mich zurzeit erledigt.