Forum: Compiler & IDEs Memory Managment und C Programm


von Felix (Gast)


Lesenswert?

Hey ich hab ne Frage zur Verteilung von Memory in einem C Programm.
Also in C ist Memory ja aufgeteilt in (initialized und 
uninitialized)Data Segment,Text Segment,Heap und Stack. Aber zum 
Beispiel auf meinem Arm Cortex a35 habe ich verschiedene Speicher die 
unterschiedlich schnell abrufbar sind L1 und L2 cache und SRam. Wie 
passen die beiden Systeme zueinander. Oder ist die memory Verteilung in 
C nur virtuel und wie der Speicher tatsächlich verteilt wird wird dann 
der MMU überlassen.

: Verschoben durch User
von A. S. (Gast)


Lesenswert?

Dein Linker (bzw. dessen Script) bestimmt die Lage der Segmente. Meist 
kannst Du per #pragma für verschiedene Arten von Speicher noch 
zusätzliche Segmente selbst erstellen, z.b. einen RAM-Bereich, in dem 
uninitialisierte Variablen nicht genullt werden. Oder einen Bereich im 
langsamen RAM und einen im schnellen RAM. Oder ein Segment für bestimmte 
Codeteile, die dann automatisch dort gruppiert werden.

Finde also heraus, wie Dein Linker arbeitet und was in diesem ominösen 
File steht.

von guest (Gast)


Lesenswert?

Felix schrieb:
> L1 und L2 cache und SRam

Die Caches liegen hardwaremäßig quasi transparent über dem normalen 
Speicher (egal ob SRam, DRam, Flash, ...), davon bekommt Dein C-Program 
eh nichts mit.

Felix schrieb:
> Oder ist die memory Verteilung in
> C nur virtuel und wie der Speicher tatsächlich verteilt wird wird dann
> der MMU überlassen.

Ja, vorrausgesetzt die MMU wird auch benutzt.

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.