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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.