Memory Managment und C Programm

Gast #5235260
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.
Gast #5235310
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.
Gast #5235550
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren