Forum: PC-Programmierung Thread Speicherverwaltung


von Zigna (Gast)


Lesenswert?

Bezüglich Threads habe ich folgende Frage, die mir als unklar erscheint:

Stimmt es, dass sich ein Thread Teile des Heaps exklusiv reservieren 
lassen kann und andere Threads nicht auf diesen Bereich zugreifen 
können?

von Klaus W. (mfgkw)


Lesenswert?

nicht, daß ich wüsste.

Vermutlich meinst du TLS = thread local storage?
Das ist aber auch wieder etwas anderes...

Ansonsten: Sprache? System? Wozu?

von Zigna (Gast)


Lesenswert?

Unter UNIX - POSIX.
Um eine Ressourcen innerhalb eines Prozess nicht zu überschreiben.
Oder ist es so, dass der Thread den Heap nur zeitlich exklusiv 
reservieren kann und so die anderen Threads auf diesen für eine 
bestimmte Zeit nicht zugreifen können, bevor er wieder freigegeben 
werden kann.

von Peter II (Gast)


Lesenswert?

Zigna schrieb:
> Um eine Ressourcen innerhalb eines Prozess nicht zu überschreiben.
nein darum muss man sich selber kümmern.

Jeder Thread hat seinen eigenen Stack. Aber es hindert dich niemand 
daran auf den Stack von einem anderen Thread zuzugreifen. auf den RAM 
haben alle Thread die gleichen Zugriff zu jeder Zeit.

von Zigna (Gast)


Lesenswert?

> Jeder Thread hat seinen eigenen Stack. Aber es hindert dich niemand
> daran auf den Stack von einem anderen Thread zuzugreifen. auf den RAM
> haben alle Thread die gleichen Zugriff zu jeder Zeit.

Okey ich fasse zusammen:

Jeder Thread hat seinen eigenen Stack.  Ein Thread kann kann nur Teile 
des Heaps für den eigenen Stack reservieren, auf dem die anderen Threads 
zugreifen können. Dies geschieht durch eigentverantwortliche 
Synchronisation der Threads im Prozess.

von Klaus W. (mfgkw)


Lesenswert?

Hm.

Zeig doch mal die Hausaufgabe!

von Zigna (Gast)


Lesenswert?

Gut Klaus! Durchgenommen wurde Speicherverwaltung in Threads (Unix - 
Posix)

Bewerte folgende Aussage richtig/falsch und begründe:

- Jeder Thread kann sich Teile des Heaps exklusiv reservieren
- Andere Threads können dann nicht auf diesen Bereich zugreifen

von Klaus W. (mfgkw)


Lesenswert?

Tja, und du hast dich schon umfassend informiert, oder bekommen wir hier 
die Note?

Was weißt du schon, was fehlt dir noch?

von Zigna (Gast)


Lesenswert?

Um Noten geht es hier nicht, da es eine Frage aus dem Internet ist ;) 
nur ums Verständnis.

Ein Thread kann einzelne Ressourcen sperren für einen Augenblick. 
Synchronisiert sich danach und gibt ihn wieder frei, d.h. exklusives 
reservieren des Heaps nur für die Zeit in dem der Thread diese Variable 
auch wirklich verwendet. Anschließende Freigabe des Speichers.
Beachtet werden müssen hierbei das sog. "Race condition".
D.h um auf die Frage zurückzukommen -  die anderen Threads können 
während der Zeit indem ein Thread eine bestimmte Ressource 
be-/verarbeitet und somit exklusiv reserviert, durch die Blockade nicht 
an den Speicher...
Das Threads des gleichen Prozesses auf den Stack eines Threads Zugriff 
haben, ist mir neu.

Das wäre mein Lösungsansatz.

von Zigna (Gast)


Lesenswert?

Ist dieser Ansatz richtig oder bin ich auf dem Holzweg.

von Klaus W. (mfgkw)


Lesenswert?

kommt drauf an, was du mit "Ressourcen sperren", "exklusiv" und 
"synchronisieren" meinst.

Und welche Variable?

Wo kommt hier eine race condition her?

Zigna schrieb:
> die anderen Threads können
> während der Zeit indem ein Thread eine bestimmte Ressource
> be-/verarbeitet und somit exklusiv reserviert, durch die Blockade nicht
> an den Speicher...

was heißt "kommen nicht ran"? wirklich abgeblockt, oder nur "sie gehen 
freiwillig nicht ran"?

Zigna schrieb:
> Das Threads des gleichen Prozesses auf den Stack eines Threads Zugriff
> haben, ist mir neu.

Wenn sie die Adresse haben, wieso nicht?

Zigna schrieb:
> ... oder bin ich auf dem Holzweg.

Ich würde auf ja tippen.

---

Irgendwie hört sich das so hölzern an, als ob du nie mit Threads 
programmiert hättest, und nur Stoff auswendig lernen willst.
Da sehe ich keinen Sinn drin, solange man nicht damit programmiert.

von Zigna (Gast)


Lesenswert?

Super danke! Waere es möglich ein simples ja oder nein auf die oben 
genannte frage zu bekommen.

von Klaus W. (mfgkw)


Lesenswert?

Wenn du einen ganzen Absatz mit schwammigen Aussagen hinschmeisst und 
ein klares ja oder nein haben willst, dann: nein.

Und frage bitte nicht nach einer Begründung, die wäre zu ausführlich für 
dich.

von Zigna (Gast)


Lesenswert?

Merci für die Beiträge!

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.